當運算式包含了一個以上的運算子,程式會根據運算子的優先順序作運算,例如以下的四則運算 :
除了算術運算子,其它的運算子均有其一定的運算優先順序,運算順序高的運算子會比運算順序低的運算子優先被執行。下表列舉運算子分類的運算順序,運算順序由上而下,愈上層的運算子在運算式中愈早被執行,同一欄的運算子具有相同的優先順序。
你可以在線上文件的「運算子」查到這個表的相關內容
這個表格說明了運算子的一般運算順序,而在運算式中,還可以藉由括弧 ( ) 調整運算子的運算順序,將想要優先運算的運算子放置於括弧 ( ) 內,當程式開始執行的時候,括弧 ( ) 內的運算子會優先被執行,如下式:
若是運算子具有相同的運算順序,則依據運算子的順序關聯性進行運算,一般使用兩個運算元的二元運算子,遵循左順序關聯性,由運算式的左邊開始作運算,例如以下的運算式:
int testValue testValue = 2 * 5 + 6/2第二個運算式包含了三個運算子,分別是 * 、 + 以及 / 等,依先乘除後加減的數學規則進行計算,首先取得 2 * 5 以及 6 / 2 的計算結果,然後使用加法運算子 + 將這兩個結果作加總,其中運算子 * 以及 / 優先被執行,接下來才是 + ,當這段程式執行時,同樣的也是依據此種順序作運算。
除了算術運算子,其它的運算子均有其一定的運算優先順序,運算順序高的運算子會比運算順序低的運算子優先被執行。下表列舉運算子分類的運算順序,運算順序由上而下,愈上層的運算子在運算式中愈早被執行,同一欄的運算子具有相同的優先順序。
類型 | 運算子 |
---|---|
主要 | x.y f(x) a[x] x++ x-- new typeof checked unchecked |
一元 | + - ! ~ ++x --x (T)x |
乘法類 | * / % |
加法類 | + - |
移位 | << >> |
關係和型別測試 | < > <= >= is as |
相等 | == != |
邏輯AND | & |
邏輯XOR | ^ |
邏輯OR | | |
條件式AND | && |
條件式OR | || |
條件式 | t ? x : y |
條件式 | = *= /= %= += -= <<= >>= &= ^= |= |
你可以在線上文件的「運算子」查到這個表的相關內容
這個表格說明了運算子的一般運算順序,而在運算式中,還可以藉由括弧 ( ) 調整運算子的運算順序,將想要優先運算的運算子放置於括弧 ( ) 內,當程式開始執行的時候,括弧 ( ) 內的運算子會優先被執行,如下式:
testValue = 2 * (5 + 6) / 2其中先計算 5 + 6 得到 11 ,然後是進行 2 * 11 / 2 的運算,括弧 ( ) 內的運算子 + 並不會受到上述表列的運算順序所約束,具有最高的運算優先順序,你也可以進一步使用巢狀括弧,設定所需的運算順序。
若是運算子具有相同的運算順序,則依據運算子的順序關聯性進行運算,一般使用兩個運算元的二元運算子,遵循左順序關聯性,由運算式的左邊開始作運算,例如以下的運算式:
x + y - z運算子 + 以及 - 具有相同的運算順序,因此運算式依序執行 x + y,接著執行 - 運算子,將所得的結果減掉 z 的數值。
沒有留言:
張貼留言