【发布时间】:2010-09-15 18:11:24
【问题描述】:
我是 Java 新手,并且有 C 的背景。我正在阅读 Khalid Moughal 的书。 在第 126 页,他举了一个例子
int i = 10;
int k = ++i + --i; // ((++i) + (--i)).
这显然违反了 C 中的序列点概念,即不能在同一个序列点中多次更改变量的值。 我的问题是相同的序列点规则是否适用于java? 可能他举这个例子只是为了解释前缀一元运算符的概念和它的副作用,但是像 Khalid Moughal 这样著名的书中不会想到这样一个明显违反语言非常基本规则的例子。
所以请确认一下。
希望你们把它带入正确的精神。
谢谢,
马维亚
【问题讨论】:
-
C 有很多包袱,因为在编写标准之前有数十个编译器和数百万个现有程序,因此他们必须以不会破坏的方式制定标准依赖于特定编译器优化事物方式的程序。此外,优化非常原始,这解释了
register关键字,它允许程序员执行任何体面的编译器都可以做得更好的微优化。
标签: java