java中的自增运算符问题。

img

求牛人解答一下,这个问题很懵逼,搞了一晚上,始终搞不懂是啥原理,括号在里面起作用嘛?

System.out.println(a+1+(++a)+ a++);
//分成三步[a+1] + [(++a)] + [a++]
//[a+1] 先执行a+1=8
//++a 先a=a+1再执行,此时a的值为8 再执行a++
//a++ 先执行再a=a+1,即此时a的值还是8,三个8相加得24
//那个括号在这里不是起到优先级的作用,是用来分隔加号的,主要搞清楚a++与++a的区别

System.out.println(a+1+++a+(a++));这个输出语句中,你放到类中运行试试,是运行不了的,在数字1那里会报错 运算 ++/-- 的自变量无效,因为你根本无法判断那两个加号是属于谁的

img

你的代码第二行ita=7是不是写错了,应该是int a=7
改了之后,我运行代码之后结果为24
我的理解是,根据优先级是先执行括号里面的,但是
++a和a++一个独立的个体,无论它写在括号里还是不写在括号其实都是一样的,优先级都一样,同时执行,因为a=7. 所以++a等于8,a++等于7,这样的算法你应该懂