Asteptam sugestiile sau intrebarile dumneavoastra pe rubrica de comentarii.
Tags: capcane-c, intrebari-c, intrebari-interviu, invata-c, quiz-c
Asteptam sugestiile sau intrebarile dumneavoastra pe rubrica de comentarii.
Tags: capcane-c, intrebari-c, intrebari-interviu, invata-c, quiz-c
5 comentarii la “Intrebari si raspunsuri pentru interviurile C”
|

La intrebarea 2.. nu e (a+b)*c? adica 20
Buna Mirela,
In prima faza a compilarii (preprocesarea) compilatorul inlocuieste directivele de preprocesare din fisierul sursa C; in cazul de fata directivele de preprocesare care ne intereseaza sunt ‘#define‘:
- prima inlocuire: multiply(add(a,b),c) => add(a,b)*c
- a 2-a inlocuire: add(a,b)*c => a+b*c
In faza de preprocesare nu se face nici o operatie, pur si simplu se inlocuiesc directivele respective. In cazul de fata rezultand expresia: a+b*c = 14
Mai multe detalii despre fazele compilarii poti afla aici: http://itassistant.org/diverse/utilizarea-sistemelor-de-operare/utilizarea-sistemelor-de-operare-11.html
multumesc!
Iata ce afiseaza programul de la prima intrebare:
10 sizeof(i++) = 2 11
Numarul de octeti ocupat de un int este dependent de masina pe care se ruleaza programul.
sizeof nu este o functie ci un operator, dar incrementarea se realizeaza.
Va rog sa corectati raspunsul.
Salut Paul,
Compilatorul nu are nevoie sa stie valoarea lui i ci doar tipul acestuia, deci expresia (i++) nu va fi evaluata.
Aici ai un pasaj din standardul C99:
“
The “sizeof” operator yields the size (in bytes) of its
operand, which may be an expression or the parenthesized
name of a type.
[...]
The size is determined from the type of the operand.
The result is an integer. If the type of the operand
is a variable length array type, the operand is evaluated;
otherwise, the operand is not evaluated and the result is
an integer constant.
“
In legatura cu numarul de octeti pe care este stocat un int ai dreptate, acesta este dependent de masina: 2 sau 4 octeti. Raspunsul perfect corect la aceasta intrebare ar fi:
10 sizeof(i++) = 2 (sau 4) 11