What will be the output of this program on an implementation where "int" occupies 2 bytes?
#include <stdio.h>
void main()
{
int i = 3;
int j;
j = sizeof(++i + ++i);
printf("i=%d j=%d", i, j);
}
#include <stdio.h>
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
C. i=5 j=2
D. the behavior is undefined
Answer: Option B
Solution(By Examveda Team)
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.
Join The Discussion
Comments ( 5 )
Related Questions on Operators and Expressions
What does the ++ operator do in C when applied to a variable?
A. Decrements by 1
B. Adds 1
C. Doubles the value
D. Leaves it unchanged
in 32 bit operating system
i=3 j=2
in 64 bit operating system
i=3 j=4
I run this program on my codeblocks 13.12. It showed i=3 j=4. Why j=4 ?
i = 3
j = sizeof(10) //sizeof(int)
so i = 3 j = 2
i=3 b=4
Why expression (int) is reduced at compile time?