首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java语言中,后增量(i++)和前增量(++i)运算符是如何工作的?

在Java语言中,后增量(i++)和前增量(++i)运算符是如何工作的?
EN

Stack Overflow用户
提问于 2010-03-03 20:21:43
回答 11查看 370.2K关注 0票数 115

你能给我解释一下这段Java代码的输出吗?

int a=5,i;

i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;

System.out.println(a);
System.out.println(i);

两种情况下的输出都是20

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-03-03 20:25:44

这有帮助吗?

a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)

a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)

要点是++a递增该值并立即返回它。

a++还会递增该值(在后台),但返回未更改的变量值-它看起来像是稍后执行的值。

票数 171
EN

Stack Overflow用户

发布于 2010-03-03 20:27:36

++a递增,然后使用变量。

a++使用变量,然后递增该变量。

如果你有

a = 1;

而你确实做到了

System.out.println(a++); //You will see 1

//Now a is 2

System.out.println(++a); //You will see 3

codaddict explains您的特定代码片段。

票数 234
EN

Stack Overflow用户

发布于 2010-03-03 20:24:27

在对a求值之前,++a会递增它。a++a求值,然后递增它。

与您给定的表达式相关:

i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end

我上面使用的父类是由Java隐式使用的。如果你这样看这些术语,你可以很容易地看到,它们都是相同的,因为它们是可交换的。

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

https://stackoverflow.com/questions/2371118

复制
相关文章

相似问题

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