先來看程序源碼:
#include <stdio.h>
void main()
{
int a = 1;
printf("a = %d\n", a);
a = 1;
printf("a+++a+++a++ = %d\n", a+++a+++a++);
a = 1;
printf("(++a)+(++a) = %d\n", (++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)+(++a)+(++a)+(++a)+(++a) = %d\n", (++a)+(++a)+(++a)+(++a)+(++a)+(++a));
a = 1;
printf("(++a)+(++a)*(++a)+(++a)) = %d\n",(++a)+(++a)*(++a)+(++a)); /* 應該理解是4+4*4+5 */
a = 1;
printf("(++a)+(++a)*(++a)*(++a)) = %d\n",(++a)+(++a)*(++a)*(++a)); /* 應該理解是5+4*4*5 */
}
運行結果:
分析:
以(++a)+(++a)+(++a)爲例
a = 1;
第一步:++a; a = 2;
第二步:++a; a = 3;
第三步:(++a)+(++a); 3+3 = 6; //注意
第四步: ++a; a = 4;
第五步:6+4 = 10;
關鍵: 表達式執行的順序
編譯環境: VC++6.0
注意:不同編譯器上運行結果可能不同
參考: Linux C編程---一站式學習 ---C語言本質---運算符詳解一章