看我的代码,它到底是怎么算的?看我的注释算的是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回答
Java中,同一条语句是从左往右执行的吧,根据运算符优先级应该
//先算(a++)=a+1=2+1=3;(--a)=a-1=2-1=1,此时a=3
//再算a=3+3+1,结果a=7
慕侠5419749
2018-05-10
应该是2+3+2,不是3+3+1,楼上的解释才是对的
好帮手慕雪
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
祝:学习愉快
慕盖茨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
Skye丶
2018-05-05
相似问题