我執行下面的代碼。增量操作的評估順序在c
int main(void)
{
int c;
c=0;
printf("%d..%d..%d \n", c,c,c);
c=0;
printf("%d..%d..%d \n", c,c,c++);
c=0;
printf("%d..%d..%d \n", c,c++,c);
c=0;
printf("%d..%d..%d \n", c++,c,c);
return 0;}
我所期望的輸出
0..0..0
1..1..0
0..1..0
0..0..0
但是(編譯GCC)的輸出是
0..0..0
1..1..0
1..0..1
0 1..1
我的期望有什麼問題? 在gcc中,評估順序是從右到左。是嗎?
如果你增加了所有增量,會發生什麼?它打印3,2,1? –
它將是2 1 0 – Shihab
我會將此標記爲重複項,除非我發現的重複項比C 2011標準更舊,並且我們應該爲新標準更新答案。涉及C 2011標準的這個主題還有另一個問題嗎? –