【发布时间】:2017-07-02 07:09:15
【问题描述】:
我不明白为什么这个后增量方程不增加。我原以为在 += 操作之后该值会增加 1,然后第二次 i 将有一个 1 值。但是输出是一个零零的无限循环。有谁能解释为什么“我”不增加。
int i = 0;
for(; ; ) {
if ( i >= 10) break;
i += i++;
}
System.out.println(i);
【问题讨论】:
-
附带说明,行为来自如何定义后增量以及 += 运算符的工作方式。在 JS 中可以观察到相同的行为,并且可能在其他语言中也可以观察到。
-
Java Puzzlers 有一个类似但稍微复杂一点的谜题,名为 Inclement Increment。
-
在 Java 和 C# 中它输出无限循环。但在 C 中,它的输出类似于代码:
i += ++i;Changes from language to language. -
@HasanAlperOcalan - 我希望在 C 中它会触发未定义的行为。在这种情况下说“C 做 X”可能是错误的。