我的兴趣在于的和
在
循环时的区别。我知道使用后增量值,然后递增,操作返回一个恒定的前增量。
while (true) {
//...
i++;
int j = i;
}
这里,j
会在循环结束时包含旧的i
还是后递增的i
?
由于语句i以结束;在您的示例中,使用前置增量还是后置增量没有区别。
当您使用结果时会出现差异:
int j = i++; // i will contain i_old + 1, j will contain the i_old.
vs:
int j = ++i; // i and j will both contain i_old + 1.
取决于你如何使用它们。
i
制作副本,增加i,并返回副本(旧值)。i
增加i,并返回i。在您的示例中,这一切都是关于速度的。i
将比i
更快,因为它不制作副本。
然而,编译器可能会优化它,因为您没有在示例中存储增量运算符的返回值,但这仅适用于int
等基本类型。
理解的基本答案。递增运算符的工作方式如下:
// ++i
function pre_increment(i) {
i += 1;
return i;
}
// i++
function post_increment(i) {
copy = i;
i += 1;
return copy;
}
一个好的编译器在检测到返回的值不会被使用时,会自动将i
替换为i
。