黑马程序员技术交流社区

标题: 关于自增减运算符优先级的一个问题 [打印本页]

作者: 愿爱无忧    时间: 2015-12-15 23:14
标题: 关于自增减运算符优先级的一个问题
    自增++与自减--之前一直觉得很明白,几乎也没在这个知识点错过,但今天做作业四个题全错了,才明白自己还是理解的不够透彻
    这几道题是用来强化短路与和短路或的,我做这题的时候,莫名地想到了运算符优先级,就看了下教材,上面写着++与--优先级为2,短路与或排在11和12
    于是我就想应该先算自增,于是就全错了现在还是没清楚优先级的问题,下面是那几道题:


                int x = 1,y = 1;
                if(x++==1 | ++y==1){
                        x = 7;
                }
                System.out.println("x="+x+",y="+y);       


                int x = 1,y = 1;
                if(x++==1 || ++y==1){
                        x = 7;
                }
                System.out.println("x="+x+",y="+y);


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

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


作者: 愿爱无忧    时间: 2015-12-15 23:15
我现在只是记住了,++放后面要在整个句子完成之后再运算,但书上那个优先级是啥意思呢?
作者: xingchen5645    时间: 2015-12-16 02:14
如果++(--)不参与运算,比如:a++;  则都是自加一,若是参与运算,则++在前是先进性运算后赋值,若是++在后则先赋值后运算,归结于JAVA运算语句从左至右。
作者: Java1211张美红    时间: 2015-12-16 09:25
会算就可以了!
作者: 姚成晖    时间: 2015-12-16 17:44
优先级的意思    是++和与或这几个运算符  先运算自增    这个没错

但x++和++x都是自增1,
你错的原因是没搞明白  x++  和++x有什么区别                                                
作者: 愿爱无忧    时间: 2015-12-16 18:34
想起那天同桌给我讲解的,x++确实是先进行了自增,但是参与语句运算的还是自增之前的值,而++x自增后参与语句运算的是自增之后的值。




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