在这种情况下增量运算符的功能

时间:2012-08-16 15:27:53

标签: c

  

可能重复:
  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帮我解决了这个问题。

2 个答案:

答案 0 :(得分:1)

行为 undefined ..如果您搜索SO,则会有类似于此的 很多 帖子。

例如What would the evaluation order of x = x++ + ++x; be?Why are these constructs (using ++) undefined behavior?以及更多。

最后,只是一个意见/评论:我认为没有人会主张编写那种类型的代码,因为它也很难理解(因此你的问题的原因)。

答案 1 :(得分:0)

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

(从技术上讲,规则是不要在同一sequence points之间多次修改值