求解Java中a=1,b=2,a+++b的值为什么是3?

在Java中“++”运算符是右结合性,优先级“+”高于“++”,a+++b不是应该等价于a+(++b)吗?如果这样的话不就等于4了吗?可是运行结果是3,为什么呢?... 在Java中“++”运算符是右结合性,优先级“+”高于“++”,a+++b不是应该等价于a+(++b)吗?如果这样的话不就等于4了吗?可是运行结果是3,为什么呢? 展开
 我来答
fuhaiwei
2014-09-25 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1391万
展开全部

注意结合性是从右到左,所以请从右向左看。

考虑这些东西是没用的,因为到任何大一点的公司,这些代码都不能过Review。

要不然你写成(a++) + b,要不然就不要这么用。

没有任何一本正规的教程会让你研究优先级,都是推荐,如果有歧义,就加上括号。

只要记住这一句话:乘除高于加减,括号高于一切

追问
还是不明白
追答

int a1 = 10;
int b1 = 20;
System.out.println(a1+ ++b1);//输出31


int a2 = 10;
int b2 = 20;
System.out.println(a2++ +b2);//输出30


int a3 = 10;
int b3 = 20;
System.out.println(a3+++b3);//输出30

这个问题的答案就是不要研究这个,然后形成良好的书写规范。
路亚向前冲8t
2014-09-25 · TA获得超过484个赞
知道小有建树答主
回答量:636
采纳率:0%
帮助的人:438万
展开全部
应该是等价于 a++(+b),而a++是先使用再运算,所以最终等价于a+b,结果为3。
追问
还是没看明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拓跋野狐
2014-09-25 · 超过21用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:52.1万
展开全部
(a++)+b
1+b;a=a+1;
1+2;a=2
3;a=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式