2016-10-29 45 views
-2

我想下面的代碼:「c - = - c - C++;」應該是什麼結果在C語言?

#include <stdio.h> 

int main() 
{ 
    int c =0; 
    c -= --c - c++; 
    printf("%d \n",c); 
    return 0; 
} 

當我編譯和使用網上的C編譯器(https://www.tutorialspoint.com/compile_c_online.php)的結果是-1運行它。但我希望它是0。 所以,我嘗試在我的本地開發的C++(Windows)和結果爲0。

  1. 如果結果爲0?
  2. 如果是這樣,爲什麼2 gcc編譯器(確定它們在不同plataform)給了我2個不同的結果?

我一直在尋找某種自動標誌otimization可能會產生不同的結果,但我沒有成功。

+0

未定義的行爲。 –

+0

「應該是什麼結果」c - = - c - C++;「?」你的同事用一個大俱樂部打你。 –

+2

這就好像有一個噴泉在某個地方噴涌出一個關於多個增量操作符的相同問題 –

回答

4

這是未定義的行爲(3個修改,沒有順序點中間到同一個變量)