日期:2014-05-20  浏览次数:20669 次

关于++运算符的基本运算
关于++运算符的基本运算
a=3;
b=a++*++a;
System.out.println( "a= "+a+ ";   b= "+b);
请给出详细的计算过程和说明
谢谢

------解决方案--------------------
a = 5 b = 15
++a 先计算再取值
a++ 先取值再计算
------解决方案--------------------
++ --的优先级高于*,所以先算++ ,b=a++*++a;相当与:b=(a++)*(++a);a++后,a 当作3用,然后变为4,++a后,a变为5后当作5用,所以b=3*5;a=5;
------解决方案--------------------
a++ 和 ++a 哪个先算是未定义的,而这个顺序会影响计算结果。
------解决方案--------------------
同意一楼的说法,

基本是单目运算符的优先级要高于双目的运算符.比如++与* ++的优先级高于* 所以就是(a++)*(++a),无论a++还是++a的结果a都自增1,所以就是3*5了.
------解决方案--------------------
这种代码在实际的项目中是绝对禁止使用的,不被懂行的人K死才怪。
------解决方案--------------------
a++ 和 ++a 哪个先算是未定义的,而这个顺序会影响计算结果。
------------------------------------------------------
------------------------------------------------------
是吗?乘法不应该有这个问题吧!如果是System.out.print((i++)+ ", "+(++i));还可能有这个问题,请高手指点!
------解决方案--------------------
up!
------解决方案--------------------
计算总要有个结合律吧.
通常以从左向右居多(当然也有特例,这个你需要查运算符表),你的问题中
b=a++*++a;当然是++高一些,本着从左向右,先遇到a++,他是先使用,后增加,
此时b=3*++a.a这时也是4了,*是双运算符,现有一个运算符,还差一个,遇到了
++a,它是先增加,后参与运算的.所以a增加到5,然后参加运算.b=3*5=15.