可能重复:
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
正在做这样的事情?
答案 0 :(得分:-1)
对于i ++,它就像:首先做等式然后递增i。
对于++我就像:先增加i然后做等式。
所以我猜我+ ++ +我被解释为i +(++(++ i))所以结果就是22.
有线语法发生有线的事情只是不做这样的事情;)。
如果我是对的++ i + ++我也会22岁。