1. 基本運算符
C語言中的基本運算符包括算術運算符、關系運算符、邏輯運算符、賦值運算符和位運算符。它們的優先級和結合性如下表所示
運算符 | 優先級 | 結合性
- | - | -
() | 1 | 從左到右
! ~ ++ -- + - & sizeof | 2 | 從右到左
/ % | 3 | 從左到右
+ - | 4 | 從左到右
<< >>5 | 從左到右
<<= >>= | 6 | 從左到右
== != | 7 | 從左到右
& | 8 | 從左到右
^ | 9 | 從左到右
\| | 10 | 從左到右
&& | 11 | 從左到右
\|\| | 12 | 從左到右
? | 13 | 從右到左
= += -= = /= %=<<= >>= &= ^= \|= | 14 | 從右到左
, | 15 | 從左到右
2. 表達式求值順序
在C語言中,表達式的求值順序是未定義的。這意味著,當一個表達式包含多個運算符時,它們的求值順序是不確定的。例如,對于表達式a + b c,我們無法確定是先計算b c,還是先計算a + b,因為它們的求值順序是未定義的。
為避免表達式求值順序的不確定性,我們可以使用括號來明確指定運算的順序。例如,對于表達式(a + b) c,我們可以確定先計算a + b,再將結果乘以c。
3. 注意事項
在使用運算符時,我們需要注意以下幾點
(1)賦值運算符的優先級,因此在表達式中使用賦值運算符時,需要格外注意運算順序。
(2)邏輯運算符&&和||是短路運算符,即當左側的表達式已經能夠確定整個表達式的結果時,右側的表達式將不再被求值。
(3)在使用位運算符時,需要注意數據類型的符號位,以避免出現意外的結果。
(4)在使用自增和自減運算符時,需要注意前綴和后綴的區別,以及它們對表達式求值的影響。
總之,在使用C語言中的運算符時,我們需要認真理解它們的優先級和結合性,以避免出現不必要的錯誤。同時,也需要注意表達式求值順序的不確定性,盡可能使用括號來明確指定運算的順序。