轉自http://blog.sina.com.cn/s/blog_4762d6850100y1kl.html
#include <stdio.h>
int main(char *argv[], int *argc)
{
int i=3;
int j;
j = sizeof(++i+ ++i);
printf("i=%d j=%d", i ,j);
}
上述程序,爲什麼打印出來的i=3呢, 我理解的是5
解答::
根據C99規範, sizeof是一個編譯時刻就起效果的運算符,在其內的任何運算都沒有意義, j = sizeof(++i+++i); 在編譯的時候被翻譯成 j=sizeof((++i+++i的數據類型)) 也就是 j = sizeof(int); 也就是 j= 4; (32bit系統,如果是16位系統,則j=2) 然後纔會繼續編譯成最終的程序,當然在最終程序執行的時候,自然不會執行任何++i了。