Friday, June 29, 2018

c - Why does sizeof(x++) not increment x?



Here is the code compiled in dev c++ windows:



#include 

int main() {

int x = 5;
printf("%d and ", sizeof(x++)); // note 1
printf("%d\n", x); // note 2
return 0;
}


I expect x to be 6 after executing note 1. However, the output is:



4 and 5



Can anyone explain why x does not increment after note 1?


Answer



From the C99 Standard (the emphasis is mine)




6.5.3.4/2



The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. The size is determined from the type of the operand. The result is an integer. If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant.




No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...