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

前端 未结 9 1837
清酒与你
清酒与你 2020-11-22 09:36

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

#include 

int main() {
    int x = 5;
    printf(\"%d and \", sizeof(x++)); // note 1
    print         


        
9条回答
  •  感动是毒
    2020-11-22 09:59

    sizeof is a compile-time operator, so at the time of compilation sizeof and its operand get replaced by the result value. The operand is not evaluated (except when it is a variable length array) at all; only the type of the result matters.

    short func(short x) {  // this function never gets called !!
       printf("%d", x);    // this print never happens
       return x;
    }
    
    int main() {
       printf("%d", sizeof(func(3))); // all that matters to sizeof is the 
                                      // return type of the function.
       return 0;
    }
    

    Output:

    2
    

    as short occupies 2 bytes on my machine.

    Changing the return type of the function to double:

    double func(short x) {
    // rest all same
    

    will give 8 as output.

提交回复
热议问题