黑马程序员技术交流社区
标题:
这两个的输出结果不一样?y的结果应该都是一样啊?谁能解释一下
[打印本页]
作者:
梁秋瑜
时间:
2013-5-25 19:14
标题:
这两个的输出结果不一样?y的结果应该都是一样啊?谁能解释一下
int x = 1,y = 1;
if(x++==2 & ++y==2) {
x =7;
}
System.out.println("x="+x+",y="+y);
int x = 1,y = 1;
if(x++==2 && ++y==2){
x =7;
}
System.out.println("x="+x+",y="+y);
作者:
SOAR
时间:
2013-5-25 19:21
x++是先使用x然后在自加,++y是先自加然后在使用
第一个if语句块用了&,无论&左边的结果是什么右边的都会继续计算
第二个if语句块使用了&&,如果左边是true则继续计算右边的,如果左边的是false则右边的在不参与计算。
作者:
神之梦
时间:
2013-5-25 19:22
&&与&两运算的区别:
&&如果左边为假,右边就不进行判断。
&不管左边是否为假,右边都进行判断。
楼主知道这点应该就知道结果不同的原因了、
作者:
张旺达
时间:
2013-5-25 19:26
你这个是一个程序还是两个程序啊?如果是一个的话,下面就不用再定义int x = 1,y=1了...
如果是一个程序的话,当输出第一个x和y的时候,它们的值就已经是变化后的值了,
所以第一个输出之后x,y的值分别等于2,下面的x和y初始值就是2了吧,所以下面x和y都是3...
个人见解。。{:soso_e197:}
作者:
clp
时间:
2013-5-25 21:34
注意区别单与(&)和双与(&&)
捕获.JPG
(52.12 KB, 下载次数: 0)
下载附件
2013-5-25 21:33 上传
作者:
First
时间:
2013-5-25 22:26
第一个流程:
1. x==2 返回 false
2. x=x+1 得到 x = 2;
3 y=y+1 得到 y = 2;
4 y==2 返回 true
5. if(false&true) 得到 false
6. 打印 x=2,y=2;
第二个流程:
1. x==2 返回 false
2. x=x+1 得到 x = 2;
3. if(false&&这里不好执行) 得到false;
6. 打印 x=2,y=1;
作者:
FantasticPie
时间:
2013-5-25 23:01
这个问题考了两个方面的知识:一、x++ 与 ++x的区别; 二、按位与“&”和逻辑与“&&”的区别;楼上的已经回答得的很完善了
作者:
王靖远
时间:
2013-5-25 23:38
建议把第二天和第三天的学扎实,需要记忆的细节和容易混乱的东西很多。打好基础后面才能学的轻松。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2