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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张清华 中级黑马   /  2015-5-24 23:14  /  363 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        int x = 1,y = 1;

        if(x++==2 & ++y==2)       
        {
                x =7;
        }
        System.out.println("x="+x+",y="+y);  
        运行的结果是:x=2,y=2
按照老师上课讲的内容是:++在前: 先++,然后在运算(操作)
                                   ++在后: 先运算(操作),然后在++
                                    可以得出正确答案。
但是按照运算符的优先级别顺序来看,++的优先级是高于=赋值运算符的,按照运算符优先级顺序计算就会得出x=7,y=1
我怀疑自己肯定是钻了牛角尖,但是一直找不出原因,请各位大神指教

评分

参与人数 1黑马币 +13 收起 理由
陈明佳 + 13 很给力!

查看全部评分

3 个回复

倒序浏览
因为x++是先比较再运算,先比较那么x是1,是不等于2的,即if里面的判断结果为false,那么也就不会执行if里面的内容了,所以结果为x=2
回复 使用道具 举报
x++==2,先拿x和2比较后自增;++y==2,是y自增再和2比较,(x为2)false&true    (y为2)不执行if条件
回复 使用道具 举报
x++先比较再自增,++x先自增,再比较
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马