2016-10-29 99 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个修改,没有顺序点中间到同一个变量)