int a=3;
int b=4;
a-=b++;
是先算a=a-b然后b++。
还是先b++返回原来的b,再a=a-b?????

解决方案 »

  1.   

    应该是先算a=a-b然后b++
    ,,你试试么,
      

  2.   

    相当于 a = a-(b++)先算a-b(没自加的b).然后b自加,然后赋值给a.这问题有意义吗?
      

  3.   

    a -= b++;
      等于
    a = a - b;
    b = b + 1;b++ 是后置,执行的优先级最低。
    ++b 是前置,执行的优先级最高。具体测试办法:
    直接打印结果
      

  4.   

    四楼解释的已经很详细了吧;
    你可以在最后面分别打印出a、b的值嘛,
    打印出来
    a = -1;
    b = 5;
    结论已经很明白了
      

  5.   

    Java运算符的优先级与结合性。自增运算符++和自减运算符--对变量的操作结果是增加1和减少1,当把他们作为其他表达式的一部分时,运算符放在变量前面,那么在运算之前,变量先完成自增或自减运算;如果运算符放在后面,那么自增自减运算是在变量参加表达式的运算后再运算。这样讲可能不太清楚,看下面的例子: num1=4; num2=8; a=++num1; b=num2++; a =++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算符在变量的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为自增运算符在变量的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为 9。当然,如果出现 c=num1+++num2; 到底是c=(num1++)+num2;还是c=num1+(++num2);这就要根据编译器来决定,不同的编译器可能有不同的结果,应当尽量避免出现上面复杂的情况。