黑马程序员技术交流社区

标题: 运算符优先级别问题请教 [打印本页]

作者: 张清华    时间: 2015-5-24 23:14
标题: 运算符优先级别问题请教
        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
我怀疑自己肯定是钻了牛角尖,但是一直找不出原因,请各位大神指教
作者: wwb1105    时间: 2015-5-24 23:27
因为x++是先比较再运算,先比较那么x是1,是不等于2的,即if里面的判断结果为false,那么也就不会执行if里面的内容了,所以结果为x=2
作者: 林思奇    时间: 2015-5-25 00:21
x++==2,先拿x和2比较后自增;++y==2,是y自增再和2比较,(x为2)false&true    (y为2)不执行if条件
作者: 黯然残影    时间: 2015-5-25 01:24
x++先比较再自增,++x先自增,再比较




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