C++ question

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++

C++ question

Mesajde stelian_2681 » 23 Apr 2017, 10:47

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:
Cod: Selectaţi tot
#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.
Cod: Selectaţi tot
#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;
}
stelian_2681
Junior
Junior
 
Mesaje: 32
Membru din: 24 Iun 2013, 23:25
Judet: Olt

Re: C++ question

Mesajde Ovidiu Cucu » 28 Apr 2017, 10:56

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/190232/can-a-recursive-function-be-inline.
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: C++ question

Mesajde Ovidiu Cucu » 28 Apr 2017, 11:06

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! :)
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: C++ question

Mesajde stelian_2681 » 29 Apr 2017, 18:58

Multumesc pentru raspunsuri!
stelian_2681
Junior
Junior
 
Mesaje: 32
Membru din: 24 Iun 2013, 23:25
Judet: Olt


Înapoi la Limbajul C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator

cron