Friday 29 June 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

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...