黑马程序员技术交流社区

标题: 基础班第三天 [打印本页]

作者: 俏皮雅轩    时间: 2015-9-15 21:50
标题: 基础班第三天
int x = 1,y = 1;

if(x++==2 & ++y==2)
{
        x =7;
}
System.out.println("x="+x+",y="+y);  

运行结果是什么
作者: K_LONG    时间: 2015-9-15 22:01
X = 2;,y = 2;
作者: 王海彬    时间: 2015-9-15 22:19
运行结果是: x=2 ,y=2
     因为++这个运算符变量在左边和右边的优先级不同,x++ == 2 ,它可以看作是x==2 , x=x+1来看这样一来结果是false,而++y==2,可以看作是y=y+1,y==2来看结果当然是true,false&true结果为false,跳过if语句,但是变量x,y是在if语句外显示初始化的,所以x 被重新赋值x = 1+1,同等y也一样,运行结果也就出来了
作者: five    时间: 2015-9-15 22:29
x=2,y=2       加几个字满十几个字符
作者: five    时间: 2015-9-15 22:31
如果没有错的话就是下面这个结果了
x=2,y=2
作者: xiaoya0o0o    时间: 2015-9-15 22:41
结果为:x=2,y=2

&并且两边都为ture结果为true,括号内&两边都要进行判断,比如:假如x++==2为假时,还得继续判断右边的++y==2
&&并且两边都为ture结果为ture,当&&的左边为假时就不用判断右边的了,直接为假
比如:假设x++==2为假时就不必判断右边的++y==2了

&&、||和&、|的区别:
        1.逻辑&&和||具有短路行为,一旦确定整个表达式的结果,那么将不再执行剩余表达式;

++和--
如果表达式中,只做++或-- 一件事情,那么前++/--和后++/--效果一样的;
        但如果表达式中做多件事情:
                前++/--:先自增/自减,然后再参与表达式的其它运算;
                后++/--:先参与表达式的运算,然后在自增/自减;
比如该题:在 if(x++==2 & ++y==2)中x++=2先是参与了 if 语句的判断再把x赋值为2了
而 ++y==是先将y赋值为2再参与了if 语句的判断
作者: xingui66    时间: 2015-9-15 22:54
王海彬 发表于 2015-9-15 22:19
运行结果是: x=2 ,y=2
     因为++这个运算符变量在左边和右边的优先级不同,x++ == 2 ,它可以看作是x==2 ...

佩服,谢过
作者: 13160123235    时间: 2015-9-15 23:03
顶大神啊……
作者: xiao_D    时间: 2015-9-15 23:34
{:3_46:}{:3_47:}{:3_55:}
作者: 纳木错的程序猿    时间: 2015-9-16 22:02
自己再多写了几个,也算是对这个算术运算符和逻辑运算符的一个加深了解了。
作者: 任振铭    时间: 2015-9-16 22:27
结果是x=2,y=2
作者: 193936696    时间: 2015-9-16 22:36
就是敲!
作者: 哈哈我赢了    时间: 2015-9-16 22:46
X=2,Y=2     
作者: Hi不言而喻    时间: 2015-9-16 22:52
既然这么多大神在我也就默默的看着吧
作者: 人生苦旅    时间: 2015-9-16 23:01
感觉都是大神啊!加油加油!
作者: 談哋児    时间: 2015-9-16 23:27
当语句x++执行完之后,x还会自增1的

作者: kaysun    时间: 2015-9-16 23:50
x=2 ,y=2

作者: jake_liu    时间: 2015-9-16 23:55
在哪上基础班啊?我也在上基础班
作者: zzy1990    时间: 2015-9-17 09:25
学习了,嘿嘿
作者: ln0491    时间: 2015-9-17 09:39
2,,2.。。。。。。
作者: 水果牛牛    时间: 2015-9-17 10:11
原来弄混了,学习了
作者: sxwnzbn    时间: 2015-9-17 10:13
x=2 ,y=2
作者: 丶不缺小哥范儿    时间: 2015-9-17 10:14
x=2,y=2.~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2