黑马程序员技术交流社区
标题:
打印结果是多少?分析一下。
[打印本页]
作者:
meng
时间:
2013-9-11 18:39
标题:
打印结果是多少?分析一下。
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);
}
}
作者:
垂天云
时间:
2013-9-11 18:49
本帖最后由 垂天云 于 2013-9-11 18:54 编辑
class Test1
{
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. ++x -->x先自增,然后进行运算,即x=1;而y--则是先进行运算后再进行自减,
即1 == 1-- --> true,x值为1,y值为0;
2.由于是单与&符号,因此就要两边表达式都要进行判断,所以去执行 x++ ==1,
x在值为1的前提下,所得1 == 1 -->true ,x再自增为2
3.由于是双或||符号,其规则就是只要左边为true右边则不进行运算,因此
通过分析得知if语句中的表达式为true,则执行作用域中的语句,即x=2,y=0
*/
复制代码
本练习
主要考察逻辑运算符:
优先级由高到低:
算术运算符
比较运算符
逻辑运算符:&& ,|| ,!
赋值运算符:= ,+=
建议楼主多看看老毕的视频,说的很详细的,嘿嘿。
作者:
赵凯
时间:
2013-9-11 19:11
这是自增和自减的问题 ,首先给定初始值,判断++或- -在数的前面,说明要先进行自增或自减,在进行运算,在数的后面,要运算完之后再自增或自减。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
作者:
李政
时间:
2013-9-11 19:13
本帖最后由 李政 于 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++则相反
作者:
流浪的风
时间:
2013-9-12 18:36
双或没有运行,y只被赋值一次,所以y是0.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2