初学java ,这里 int a=1; a=a++ + ++a; 结果为什么是4不是不5?

不是应该看成a=a+1;a=a+a;a=a+1么那就应该是a=2;a=2+2;a=4+1a应该5啊?为什么结果是4求教!如果加上intb=1;b=a+++++a问a,b是... 不是应该看成 a=a+1; a=a+a; a=a+1 么 那就应该是 a=2;a=2+2; a=4+1 a 应该5啊?为什么结果是4求教!
如果加上 int b=1;b=a++ + ++a 问a,b是多少。a=a+1;b=a+a;a=a+1; 这个就清楚 a=2; b=2+2; a=2+1。a是3,b是4。还是我整个理解上有问题?
展开
 我来答
liuyang054
推荐于2016-03-08 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5304万
展开全部
public class Test {
public static void main(String[] args) {
int a=1; 
a=a++ + ++a;// ①执行上面语句后 a的值
System.out.println("a=" + a);
int b=1;
b=a++ + ++a;// ② 最终a和b的值
System.out.println("a=" + a + " b=" + b);

}
}

输出结果:

a=4

a=6 b=10


解释:

首先你要理解++ 在左边(++a)和在右边的区别(a++),+ 作为相加运算符的话 优先级是没有++运算符优先级高的, 也就是说先算++ 再算+


++a : 表示a先加1 ,然后再使用

a++ : 表示先使用a的值,  然后a再加1


那么①那一句  经过前面的a++ ,使用a的值为1后, a加1变为2  ,经过后面的++a,先加1 变为3,再和前面的1相加

翻译一下就是a = 1 +3  =4;  直到①执行完,a的值变为4


下面②那一句解释同上面的原理,翻译过来就是b = 4 + 6;


这已经说的很清楚了。

更多追问追答
追问
看了你的解释,是不是这样的,由于int a=1;a++只是将a加上1,a++这里并没有变成2(实际上还是1)而是将2代入++a中,而++a意思是先加上1,然后使用这个数(++a这里变成3了)最后1+3=4。这样理解对吗?
追答
是对的   。先使用 就是说a先用1代入  +运算然后自己加1变为2 ,  后面++a 是先加1,再代入+运算
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式