JAVA运算符优先级问题:a=45+45*50%a--

来源:百度知道 编辑:UC知道 时间:2024/07/08 17:24:46
int a=1;
这个表达式为什么等于45(这个绝对是对的)下面两种过程都可以等于45 请问哪种逻辑是对的 我的:45*50=2250 %a 2250%1=0 现在为0 然后45+0=45 而--是在用后减1的 所以现在表达式的值为45

同学的:a--=0 所以45*50%a为0 所以表达式为45

请问是哪个逻辑对啊
但是++ --运算符为最高时是这样写的 ++ --(前置) 我的理解是++a 为最高 而a++ 应该就不是了

并且a%0 这个是不合法的 在JAVA下是编译不了的

第一个,a--是在使用后才减一的。也就是%1后a值为0.故第一个答案是对的。

--是一个一元运算符,它的优先级是这当中最高的,所以应该是先做a--,然后在做*,之后是%,最后是+

45*50=2250 %a 2250%1=0

不觉得看着很晕吗?还不如看看数据结构或者算法。
写段程序都比这个好多了。
这样含糊不清的表达式,在现实工作中编程,不被PM批死才怪。

运算符优先级是 一元 > 二元 > 三元
上面的式子,a-- 先运算,之后是 %,再后是+
这个式子可以这样理解
int a = 1;
int __b = a--;
a = (45 + ((45 * 50) % __b))