關於c語言自加運算的問題(a++)

先來看程序源碼:

#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語言本質---運算符詳解一章


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章