java運算符優先級和結合性


運算符                         結合性

[ ] . ( ) (方法調用)                  從左向右

! ~ ++ -- +(一元運算) -(一元運算)           從右向左

* / %                        從左向右

+ -                          從左向右

<< >> >>>                     從左向右

< <= > >= 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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM