A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鸣人H 中级黑马   /  2015-5-24 23:12  /  917 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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!!求大神解答!!

6 个回复

倒序浏览
本帖最后由 wx_uKgDjEiS 于 2015-5-24 23:19 编辑

这个和优先级没有关系。
后++的优先级其实是比==高的。
但由于是后加,所以虽然对x进行了加一操作,但这个时候还是用没有加之前的x值进行计算,这种情况是根据++的特性来的。
回复 使用道具 举报
因为x++是先比较再运算,先比较那么x是1,是不等于2的,即if里面的判断结果为false,那么也就不会执行if里面的内容了,所以结果为x=2
回复 使用道具 举报
不参与运算时++在变量前,变量后所算出的结果没有区别,但是在参与运算时,就有区别了,++在变量后,是要先比较在加1,而++在变量前时,那就是先加1再比较
回复 使用道具 举报
x++先参与运算,后自增;++x是先增增,再参与运算。所以x++==2是1==2,返回false,循环结束。
回复 使用道具 举报
我是来看评论的
回复 使用道具 举报
因为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}没有执行到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马