|
书本上有这样一段描述:
- 在涉及到副作用的表达式中,对作为表达式一部分的本来的求值次序存在着微妙的依
- 赖关系。下面的表达式语句是这种使人讨厌的情况的一个典型例子:
-
- a[i] = i++;
-
- 问题是,数组下标的值i是旧值还是新值。编译程序对之可以有不同的解释,并视不
- 同的解释产生不同的结果。C语言标准故意留下了许多诸如此类的问题未作具体规定。
- 何时处理表达式中的副作用(对变量赋值)是各个编译程序的事情,因为最好的求值
- 次序取决于机器结构。(标准明确规定了所有变元的副作用都必须在该函数被调用之
- 前生效,但这对上面对printf函数的调用没有什么好处。)
-
复制代码
是否真的存在这个问题?
我使用了tc2和gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)都没有发现什么不妥。
有些书上的东西让人越看越犯胡涂。 |
|