sizeof(++i+ ++i)

int main() { 
    int i=3; 
    int j; 
    j = sizeof(++i+ ++i); 
    printf("i=%d j=%d", i ,j); 
    return 0;
}

i=3 j=4

上述程序,为什么打印出来的i=3呢, 我理解的是5 

解答::
根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,
j = sizeof(++i+++i); 在编译的时候被翻译成 
j=sizeof((++i+++i的数据类型)) 也就是 j = sizeof(int); 也就是 j= 4; (32bit系统,如果是16位系统,则j=2) 然后才会继续编译成最终的程序,当然在最终程序执行的时候,自然不会执行任何++i了。 
sizeof是运算符,它在编译时起作用,而不是运行时。
也就是说,在编译时,就得到了j==4,运行时,++i+i++根本没有执行过。

你可能感兴趣的:(C++)