Vidyalelo
C Programming · Q39

Operators and Expressions

Programming · C Programming · question 39

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
Answer
C.
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.