JAVA算术运算符的优先级

public static void main(String[] args) {

          int a,b,c;
          a=b=c=5;
          a=++b-++c;
          System.out.println("a="+a+"b="+b+"c="+c);
          a=b+++c++;
          System.out.println("a="+a+"b="+b+"c="+c);
          a=b--+c--;
          System.out.println("a="+a+"b="+b+"c="+c);
        }
        }
        为什么这串代码第二次第三次输出的a值是在b c自增之前所得出的?
        按优先级不是应该自增自减运算先吗?

2个回答

a++和++a,a++是在整句执行完之后才执行的,也就是在;之后执行,而++a是在语句执行前执行的。

结果
a=0b=6c=6
a=12b=7c=7
a=14b=6c=6
前面++b,先+1,表达式等于之后的,所以是6
b++,的值是自增前,6,然后b+1

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复weixin_43620318: 和优先级没有关系,++ --并不涉及优先级,a = 1,b = (a++),b=1,而a = 1,b = (++a),b=2。你无论加不加括号,都是如此。
一年多之前 回复
weixin_43620318
沐丶風缘 能不能详细说下=-=。不是赋值运算值是最低优先级吗。那为什么是先计算a的值后再b c自减
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问