在编程中,尤其是在Java中,以下两者有什么区别:
int var = 0;
var++;和
int var = 0;
++var;这会对for循环产生什么影响?
例如:
for (int i = 0; i < 10; i++) {}
for (int i = 0; i < 10; ++i) {}发布于 2011-05-30 18:53:17
tldr;
尽管var++和++var都会递增所应用的变量,但var++返回的结果是递增前的变量值,而++var返回的结果是递增后的变量值。
进一步解释
当++var或var++构成一个完整的语句时(如您的示例所示),两者之间没有区别。例如,下面是
int x = 6;
++x;
assert x == 7;等同于
int x = 6;
x++;
assert x == 7;但是,当++var或var++作为较大语句的一部分使用时,这两者可能不是等效的。例如,下面的断言传递
int x = 6;
assert ++x == 7;而这个失败了
int x = 6;
assert x++ == 7;尽管var++ ++var 和++var都会对其应用的变量进行递增,但 ++var 返回的结果是递增前的变量值,而返回的结果是应用递增后的变量值。
在for循环中使用时,两者之间没有区别,因为变量的增量不构成更大语句的一部分。它可能不会以这种方式出现,因为在源文件的同一行上还有其他代码。但是如果仔细观察,您会发现在增量之前有一个;,后面没有任何内容,所以增量运算符不会构成更大语句的一部分。
发布于 2011-05-30 18:55:12
int a = 5, b;
post增量:b = a++;:a先转移到b,然后a递增,所以现在b是5,a是<代码>D10效果是<代码>D11
前递增:b = ++a;:首先递增a,然后将结果传输到b,所以现在a是7,b也是7。效果是a = a + 1; b = a
保持独立的a++和++a的行为方式类似。在您提供的循环示例中,增量运算符在任何表达式中都没有关联,并且是独立的。因此,这两个在这个特定的实现中是相同的。
发布于 2011-05-30 18:58:05
++var是预增量运算符;它在计算表达式之前递增var的值。类似地,var++是后增量运算符;它在计算表达式之后递增var的值。
在简单循环的情况下,两个没有区别,因为表达式++var;和var++;都产生相同的结果。
有关更多信息,请参见示例http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter02/operators.html#IncDecOps。
https://stackoverflow.com/questions/6175316
复制相似问题