Page 1 of 1

C++ question

Posted: 23 Apr 2017, 10:47
by stelian_2681
Salut!
Am cateva intrebari la care caut lamuriri.

a.
O functie inline semnalează compilatorului că orice apel al functiei ar trebui sa fie înlocuit cu o implementare a functiei in linia in care se face apelul.
O functie recursiva este o functie care se autoapeleaza.
O functie inline poate fi recursiva ?

b.
Am urmatorul cod:

Code: Select all

#include <iostream>
using namespace std;

int main()
{
    cout << 25u - 50;
    return 0;
}
La compilare afiseaza 4294967271. De ce ?

c.
Codul urmator l-am luat de pe net.
Nu inteleg ce vrea sa afiseze.

Code: Select all

#include <iostream>
using namespace std;

class A
{
public:
    A()
    {}
    ~A()
    {
        throw 42;
    }
};

int main(int argc, const char *argv[])
{
    try
    {
        A a;
        throw 32;
    }
    catch(int a)
    {
        cout << a;
    }
    return 0;
}

Re: C++ question

Posted: 28 Apr 2017, 10:56
by Ovidiu Cucu
a. Specificatorul inline doar sugereaza compilatorului ca ar fi de preferat sa insereze codul de implementare a unei functii in locul de apel, in loc sa foloseasca mecanismul de apel obisnuit. Este la latitudinea compilatorului daca va face intradevar asa sau va ignora specificatorul inline. Nu se specifica nicaieri in standardul de C++ care functii pot si care nu pot fi inline. Desi banui ca profu' se asteapta la raspunsul "nu", cred ca un raspuns corect ar fi "depinde de compilator".
Vezi si discutia asta de la Stackoverflow: http://stackoverflow.com/questions/1902 ... -be-inline.

Re: C++ question

Posted: 28 Apr 2017, 11:06
by Ovidiu Cucu
b. Sufixul u de la 25u inseamna unsigned, mai pe romaneste "intreg fara semn". Cand se evalueaza expresia, rezultatul este de tip unsigned (conversia implicita se face de la signed catre unsigned), deci e normal sa-ti afiseze ce se afiseaza si nu "minus si ceva".
c. Ruleaza si-ai sa vezi! :)

Re: C++ question

Posted: 29 Apr 2017, 18:58
by stelian_2681
Multumesc pentru raspunsuri!