看我的代码,它到底是怎么算的?看我的注释算的是4,为什么最后是7?

来源:2-9 选择题

ming_Hao

2018-05-05 15:18:00

package com.Imooc;


public class Exranple {


public static void main(String[] args) {

int a=2;

a=(a++)+a+(--a);

//先算(--a)=a-1=2-1=1,此时a=1

//再算a=(a++)+a+1=1+1+1=3,此时a=3

//最后算(a++)=a+1=3+1=4,此时a=4

System.out.println(a);

}


}


写回答

5回答

Skye丶

2018-05-05

Java中,同一条语句是从左往右执行的吧,根据运算符优先级应该

//先算(a++)=a+1=2+1=3;(--a)=a-1=2-1=1,此时a=3

//再算a=3+3+1,结果a=7

http://img.mukewang.com/climg/5aed74d00001fc6f01560088.jpg

1
hing_Hao
回复
hkye丶
h 我明白了,非常感谢
h018-05-06
共5条回复

慕侠5419749

2018-05-10

应该是2+3+2,不是3+3+1,楼上的解释才是对的

0

好帮手慕雪

2018-05-10

a=(a++)+a+(--a);   //2+3+2

a=(a++)+a+(a--);//2+3+3

a=(a++)+a+(a);  //2+3+3

a=(--a)+a+(a);  //1+1+1

a=(a--)+a+(a);  //2+1+1

祝:学习愉快





0
hing_Hao
h 谢谢老师!
h018-05-10
共1条回复

慕盖茨9548946

2018-05-10

不对吧,这个应该是2+3+2得出的7,先算等号右边的,最后一步是把右边的结果赋值给左边的a

//(a++)这一项在这式子里就是当作2算的,自增运算在这之后,所以第二个a的值在这式子里当作3算,(--a)这一项先进行自减运算,所以当作2算。所以全部加起来就是2+3+2=7,最后一步是赋值给左边的a。

//可以用另几个个例子来验证这一说法。

比如:

int a=2;

a=(a++)+2*a;

//这个结果应该是2+2*3=8

int a=2;

a=(a++)*2+a;

//这个结果应该是2*2+3=7;

int a=2;

a=(--a)+a*2;

//这个结果应该是1+1*2=3

int a=2;

a=(--a)*2+a;

//这个结果应该是1*2+1=3

0
hing_Hao
h 非常详细,谢谢!
h018-05-10
共1条回复

Skye丶

2018-05-05

http://img.mukewang.com/climg/5aed755f0001892f12800720.jpg

0

0 学习 · 14452 问题

查看课程