运算的先后顺序,C++中的自加;

发布时间:2024-05-10 07:38 发布:上海旅游网

问题描述:

我们令为1先,( ++i + i )为4能理解的,但( i++ + i )为2就不能理解了,

问题解答:

这种写法本来就是不符合ANSI C的,其结果不确定,而是随编译器而异。

不要试图去理解它,即使理解过来了,换个编译器说不定结果又不一样。

Steve Summit的《C FAQ》有个类似的例子,原文如下:

“为什么这样的代码: a[i] = i++; 不能工作?”
答:“子表达式i++ 有一个副作用—– 它会改变i 的值—– 由于i 在同一表达式的
其它地方被引用, 这会导致无定义的结果, 无从判断该引用(左边的a[i] 中)是旧值
还是新值”

一样的理解思路啊,我就想不通你前面能理解后面为什么不 能理解呢。
++i,是先+1在进行其它运算,
i++是先进行其它运算再+1

热点新闻