如何在GCC中的此表达式中评估值

时间:2012-10-28 20:07:00

标签: c gcc operator-precedence

  

可能重复:
  Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)

我在程序中有一个表达式,初始值为i = 10

int j = i++ + i++;

设置j as 20 但是

int j = i++ + ++i;

设置j as 22
为什么语句之间有两个不同?我认为,差异应该是1.
我知道这在C中是未定义的,但为什么GCC正在做这样的事情?

1 个答案:

答案 0 :(得分:-1)

对于i ++,它就像:首先做等式然后递增i。

对于++我就像:先增加i然后做等式。

所以我猜我+ ++ +我被解释为i +(++(++ i))所以结果就是22.

有线语法发生有线的事情只是不做这样的事情;)。

如果我是对的++ i + ++我也会22岁。