Q39
What will be the output of this program on an implementation where "int" occupies 2 bytes? #include void main() int i = 3; int j; j = sizeof(++i + ++i); printf("i=%d j=%d", i, j);
A.
i=4 j=2
B.
i=3 j=2
AnswerC.
i=5 j=2
D.
the behavior is undefined
Answer: Option B
Solution
Answer: Option B
Solution:
Evaluating ++i + ++i would produce undefined behavior, but the operand of sizeof is not evaluated, so i remains 3 throughout the program. The type of the expression (int) is reduced at compile time, and the size of this type (2) is assigned to j.