2012-08-16 59 views
-4

可能重复:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)运作递增运算符

我有这样的代码,但我没有得到它如何运作。

main() 
{ 
int i=1; 
i= ++i + ++i + ++i; 
printf("%d",i); 
} 

我试图编译它,即时获取输出10,但我不知道如何。 我想到的是在执行加法操作之前,我得到的两个++分配值3和一个++ i得到值4。我无法弄清楚在这种情况下增量操作符是如何工作的。 Plz帮助我解决这个问题。

+1

-1。请使用未来网站顶部的搜索框。 – 2012-08-16 15:30:19

回答

0

我敢肯定,你不应该这样做。基本上,不要在同一个表达式中多次修改一个值。否则,调用“未定义的行为”,这是一种奇特的方式,说“编译器不会保证会发生什么”。

(从技术上讲,规则不会在同一个sequence points之间修改一次以上的值)