首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >++Var和Var++之间的区别

++Var和Var++之间的区别
EN

Stack Overflow用户
提问于 2011-05-30 18:50:46
回答 8查看 103.2K关注 0票数 101

在编程中,尤其是在Java中,以下两者有什么区别:

代码语言:javascript
复制
int var = 0;
var++;

代码语言:javascript
复制
int var = 0;
++var;

这会对for循环产生什么影响?

例如:

代码语言:javascript
复制
for (int i = 0; i < 10; i++) {}

for (int i = 0; i < 10; ++i) {}
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-30 18:53:17

tldr;

尽管var++++var都会递增所应用的变量,但var++返回的结果是递增前的变量值,而++var返回的结果是递增后的变量值。

进一步解释

++varvar++构成一个完整的语句时(如您的示例所示),两者之间没有区别。例如,下面是

代码语言:javascript
复制
int x = 6;
++x;
assert x == 7;

等同于

代码语言:javascript
复制
int x = 6;
x++;
assert x == 7;

但是,当++varvar++作为较大语句的一部分使用时,这两者可能不是等效的。例如,下面的断言传递

代码语言:javascript
复制
int x = 6;
assert ++x == 7;

而这个失败了

代码语言:javascript
复制
int x = 6;
assert x++ == 7;

尽管var++ ++var ++var都会对其应用的变量进行递增,但 ++var 返回的结果是递增前的变量值,而返回的结果是应用递增后的变量值。

for循环中使用时,两者之间没有区别,因为变量的增量不构成更大语句的一部分。它可能不会以这种方式出现,因为在源文件的同一行上还有其他代码。但是如果仔细观察,您会发现在增量之前有一个;,后面没有任何内容,所以增量运算符不会构成更大语句的一部分。

票数 154
EN

Stack Overflow用户

发布于 2011-05-30 18:55:12

int a = 5, b;

post增量b = a++;a先转移到b,然后a递增,所以现在b5a是<代码>D10效果是<代码>D11

前递增b = ++a;:首先递增a,然后将结果传输到b,所以现在a7b也是7。效果是a = a + 1; b = a

保持独立的a++++a的行为方式类似。在您提供的循环示例中,增量运算符在任何表达式中都没有关联,并且是独立的。因此,这两个在这个特定的实现中是相同的。

票数 18
EN

Stack Overflow用户

发布于 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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6175316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档