黑马程序员技术交流社区
标题:
这个题为什么会是这样的答案,求解释
[打印本页]
作者:
cishengbuhuan
时间:
2015-3-8 14:44
标题:
这个题为什么会是这样的答案,求解释
int x = 1,y=1;if(x++==2 & ++y==2){ x =7;}System.out.println("x="+x+",y="+y);//x=2,y=2
作者:
shewim
时间:
2015-3-8 15:28
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增
&运算符不管左边的运算结果为什么,右边的语句都会被执行
&&运算符则在左边运算结果为false时,右边语句将不被执行。
1、上面中if的条件语句(x++==2 & ++y==2)中的x++为在变量后的情况,应该先参与运算后才自增,++y则是先自增在参加运算
因此上面程序if中判断时参与(x==2&y==2) 的x、y值分别为x = 1,y=2,显然x==2为false,则if条件语句为false,因此{x = 7;}不执行
2、虽然上面的if条件语句中的x != 2,但是在运行完x++==2语句或,x自增了,x = 2;因为条件语句中使用的是&,因此不管前面的运行结果,++y == 2都会执行,因此y = 2
综上,所诉,x = 2,y = 2
作者:
cishengbuhuan
时间:
2015-3-8 16:39
shewim 发表于 2015-3-8 15:28
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增
说得好详细,谢谢
作者:
cat73
时间:
2015-3-8 16:49
本帖最后由 cat73 于 2015-3-8 16:50 编辑
int x = 1, y = 1;
if(x++ == 2 & ++y == 2) {
x =7;
}
//x: 2, y: 2
System.out.println("x: " + x + ", y: " + y);
复制代码
这样多好看
作者:
yangruijing
时间:
2015-3-8 16:50
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
所以在你的判断语句中虽然x++==2为false,但是++y还是要进行自加的,所以打印的结果x、y的值都是2
作者:
弹剑高歌踏浪行
时间:
2015-3-8 17:51
shewim 发表于 2015-3-8 15:28
自增“++”:
在变量前,则先自增再参与所在语句的运算
在变量后,则是先参加语句运算再进行自增
厉害 学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2