在一个语句中输出多个post和pre增量

时间:2010-09-28 12:50:27

标签: c post increment pre operator-precedence

我是C语言的新手,所以plz sum1帮助我。 编写的C代码

int i=3;
printf("%d",++i + ++i);

Complier gvs O / P = 9。怎么样?
Thanx提前

1 个答案:

答案 0 :(得分:4)

结果未定义。您在表达式中多次修改变量(或sequence point更准确)。

未定义序列点之间多次修改变量,所以不要这样做。

它可能是你的编译器,因为这个特殊情况决定了evalate ++i + ++i

  • 增加最后++i,产生4,留下我为4
  • 增加第一个++i,产生5,留下i为5(前面的步骤离开i为4,将其增加到5)
  • 将两个值相加,4 + 5。

另一个编译器,或者如果您更改优化级别,或者稍微更改代码,可能会产生不同的输出。