本帖最后由 莫若吻 于 2014-4-4 14:15 编辑
- class Test{
- public static void main(String[] args){
- int x=2,y=0;
- if(++x==y--&x++==1||--y==0)
- {
- System.out.println("条件语句内:x="+x+",y="+y);
- }
- System.out.println("条件语句外:x="+x+",y="+y);
- }
- }
复制代码
运行结果:
针对你的问题,我整理出上面的代码。
首先应明确两点:第一,运算的优先级,第二,if语句满足条件才执行其中的执行语句。
运算的优先级:比较运算符中,== 与 != 的优先级略低。其他比较运算符要先执行。
逻辑运算符 !的优先级最高,而逻辑&&与||的优先级低于比较运算符。
赋值运算符低于其他运算符,先运算后赋值。运算是从左往右运算的。
运算过程分析:
首先判断条件语句:++x==y--&x++==1||--y==0
(x=2,y=0)
1、 ++x==y-- 结果为: false
因为中间有个==符号,所以++x 表示先自加再判断, y--表示先判断再自减;
也就是第一步先运算x=x+1 再判断x==y 然后运算y=y-1 即:x=3,3不等于0,结果为 false 然后 y=-1
2、 x++==1 结果为 : false
运算顺序:先判断x==1 后运算 x=x+1 即:3不等于1 结果为false x=4
3、 --y==0 结果为:false
运算顺序:先运算y=y-1 后判断y==0 即:y=-2,-2不等于0,结果为false
4. 综上所述, 条件语句 ++x==y--&x++==1||--y==0 变成这样的 false & false ||false , 最终结果为false 。
因为条件不满足,所以if语句的执行语句不执行。但是运算却在判断条件语句的时候同时执行了。故运算后,只执行语句外的输出语句:x=4,y=-2。
(此答案仅供参考哦)
|