?
What will be the output of this program on an implementation where "int" occupies 2 bytes?
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);
}
Answer & Solution
Correct Answer:
Option
B
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
Login to post a comment or share your explanation.
Logini=3 j=2
in 64 bit operating system
i=3 j=4
j = sizeof(10) //sizeof(int)
so i = 3 j = 2