黑马程序员技术交流社区
标题:
关于运算符与优先级的疑问
[打印本页]
作者:
鸣人H
时间:
2015-5-24 23:12
标题:
关于运算符与优先级的疑问
int x = 1,y = 1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
这个代码的值为x=2,为什么不是x=7???
如果按照优先级来算,x的值应该是7!!求大神解答!!
作者:
wx_uKgDjEiS
时间:
2015-5-24 23:17
本帖最后由 wx_uKgDjEiS 于 2015-5-24 23:19 编辑
这个和优先级没有关系。
后++的优先级其实是比==高的。
但由于是后加,所以虽然对x进行了加一操作,但这个时候还是用没有加之前的x值进行计算,这种情况是根据++的特性来的。
作者:
wwb1105
时间:
2015-5-24 23:25
因为x++是先比较再运算,先比较那么x是1,是不等于2的,即if里面的判断结果为false,那么也就不会执行if里面的内容了,所以结果为x=2
作者:
李志鹏
时间:
2015-5-25 00:20
不参与运算时++在变量前,变量后所算出的结果没有区别,但是在参与运算时,就有区别了,++在变量后,是要先比较在加1,而++在变量前时,那就是先加1再比较
作者:
wangkai
时间:
2015-5-25 07:20
x++先参与运算,后自增;++x是先增增,再参与运算。所以x++==2是1==2,返回false,循环结束。
作者:
mgyyxhyz
时间:
2015-5-25 08:39
我是来看评论的
作者:
791180016
时间:
2015-5-25 08:50
因为x和y初始值都是1,经过if(x++==2 & y++==2)后都各加1,所以都变成2了。
而(if(x++==2 & y++==2)不成立,是因为
x++是先运算再自增
,即x++==2,表示先用x和2比较是不是相等,然后x++,说以这里x=1,而1不等于2,然后x+1为2,而
++y是先执行自增再运算
,所以{x=7}没有执行到。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2