運算符 結合性
[ ] . ( ) (方法調用) 從左向右
! ~ ++ -- +(一元運算) -(一元運算) 從右向左
* / % 從左向右
+ - 從左向右
<< >> >>> 從左向右
< <= > >= instanceof 從左向右
== != 從左向右
& 從左向右
^ 從左向右
| 從左向右
&& 從左向右
|| 從左向右
?: 從右向左
= += -= *= /= %= &= |= ^= <<= >>= >>= 從右向左
=============================================
出一個題目:
int i=3;
int number=-i++;
System.out.printf("number=%d\n",number);
System.out.printf("i=%d\n",i);
答案顯示number=-3 i=4
問題:++的優先級不是高於-號嗎?為啥不是 -(i++)呢?
解答:首先向右結合指的是符號本身,而不是變量,所以++的右面沒有變量,而-的右面有變量,
而且,++和-的優先級相同。所以,這個時候變成-3,根據后置++的定義,變量是先使用后自增的原則,結果為-3
最后i的值自增1變為4。