A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© meng 高级黑马   /  2013-9-11 18:39  /  1289 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class Demo {

        public static void main(String[] args) {
                int x=0,y=1;
       
                if(++x==y--&x++==1||--y==0){                       
                       
                       
                        System.out.println("x="+x+",y="+y);
                }
                else
                        System.out.println("y="+y+",x="+x);
        }

}


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 垂天云 于 2013-9-11 18:54 编辑

  1. class Test1
  2. {
  3. public static void main(String[] args)
  4. {
  5. int x=0,y=1;
  6. if(++x==y-- & x++==1 || --y==0)
  7. System.out.println("x="+x+",y="+y);
  8. else
  9. System.out.println("y="+y+",x="+x);
  10. }
  11. }

  12. /*
  13. 解析:
  14. 从式子中可以看出,由于是单与和双或,因此执行顺序是从左往右的,然后
  15. 1. ++x -->x先自增,然后进行运算,即x=1;而y--则是先进行运算后再进行自减,
  16. 即1 == 1-- --> true,x值为1,y值为0;

  17. 2.由于是单与&符号,因此就要两边表达式都要进行判断,所以去执行 x++ ==1,
  18. x在值为1的前提下,所得1 == 1 -->true ,x再自增为2

  19. 3.由于是双或||符号,其规则就是只要左边为true右边则不进行运算,因此
  20. 通过分析得知if语句中的表达式为true,则执行作用域中的语句,即x=2,y=0
  21. */
复制代码
本练习
主要考察逻辑运算符:

优先级由高到低:
算术运算符
比较运算符
逻辑运算符:&& ,|| ,!
赋值运算符:= ,+=

建议楼主多看看老毕的视频,说的很详细的,嘿嘿。




评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
这是自增和自减的问题 ,首先给定初始值,判断++或- -在数的前面,说明要先进行自增或自减,在进行运算,在数的后面,要运算完之后再自增或自减。if(1==1 &1==1 || -1==0) 第一个是先进性自增x=1,y=1,判断完之后,x=1,y=o;在判断第二个,1==1 ,判断完之后,x=2,y=0;因为||左边为true,右边不参与运算,所以第三个判断不用运算,所以执行第一个,即:x=2,y=0

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李政 于 2013-9-11 19:14 编辑

++x==y--&x++==1
++x这里x为1,y为1 ++x==y 成立 之后y为0
x++这里x在比较的时候仍为1 ++x==y 成立 之后x=2
++x==y--&x++==1 根据上面两个 这个也成立,
用到的是双杠|| 左边的成立 右边的就不判断了
所以打印为x=2,y=0

小结:++x表示 先对x进行+1的赋值,然后再运行这句代码  x++则相反

回复 使用道具 举报
双或没有运行,y只被赋值一次,所以y是0.

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马