ExamVeda
Login
Home
Operators and Expressions
?

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);
}

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.

Examveda
Question posted by Examveda
Community

Join the Discussion

5 Comments
Shubham Shinde
Shubham Shinde 4 years ago
in 32 bit operating system
i=3 j=2
in 64 bit operating system
i=3 j=4
Mahin&#39;s Education
Mahin&#39;s Education 6 years ago
I run this program on my codeblocks 13.12. It showed i=3 j=4. Why j=4 ?
MD.Shafiqur Rahman
MD.Shafiqur Rahman 6 years ago
i = 3
j = sizeof(10) //sizeof(int)
so i = 3 j = 2
Oma Choudhary
Oma Choudhary 9 years ago
i=3 b=4
Mehwish Shabbir
Mehwish Shabbir 9 years ago
Why expression (int) is reduced at compile time?