C程式問題 - 考試

Table of Contents

#include<stdio.h>
int x=0;
int main(){
int y=0;
printf("%d %d %d %d\n",x+1,x++,x+1,x);
printf("%d %d %d %d\n",y+1,y++,y+1,y);
return 0;
}

用gcc編譯,以上會輸出
2 0 1 0
2 0 1 1
(^這個)
我知道是從右至左執行,
但是x和y為什麼最後一個輸出會不一樣呢?

--

All Comments

Quintina avatarQuintina2013-01-05
好問題
Candice avatarCandice2013-01-07
不同compiler會有不同結果
Cara avatarCara2013-01-08
因為文法沒規定他的順序,所以各家Compile可以隨意來
Zanna avatarZanna2013-01-11
x是全域變數,y是區域變數