日期:2014-05-20  浏览次数:20662 次

第三行的计算顺序?
Java code

int a=3;
    int b=4;
    a-=b++;



是先算a=a-b然后b++。
还是先b++返回原来的b,再a=a-b

?????

------解决方案--------------------
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);这就要根据编译器来决定,不同的编译器可能有不同的结果,应当尽量避免出现上面复杂的情况。