運算子
運算子的元數,一個優先順序和關聯性。
-
Arity 表示運算元的數量。在 C 中,存在三種不同的運算子:
- 一元(1 個運算元)
- 二進位制(2 個運算元)
- 三元(3 個運算元)
-
優先順序表示哪些運算子首先繫結到它們的運算元。也就是說,哪個運算子優先對其運算元進行操作。例如,C 語言遵循乘法和除法優先於加法和減法的約定:
a * b + c給出相同的結果
(a * b) + c如果這不是想要的,可以使用括號強制優先順序,因為它們具有所有運算子的最高優先順序。
a * (b + c)這個新表示式將產生一個與前兩個表示式不同的結果。
C 語言有許多優先順序; 下面給出了所有運算子的表,按優先順序的降序排列。
優先表
運算子 關聯性 ()[]->.左到右 !~++--+-*(dereference)(type)sizeof右到左 *(乘法)/%左到右 +-左到右 <<>>左到右 <<=>>=左到右 ==!=左到右 &左到右 ^左到右 |左到右 &&左到右 ||左到右 ?:右到左 =+=-=*=/=%=&=^=|=<<=>>=右到左 ,左到右 -
關聯性表示預設情況下等同優先順序運算子的繫結方式,有兩種: 從左到右和從右到左。從左到右繫結的一個例子是減法運算子(
-)。表達方式a - b - c - d有三個相同的優先順序減法,但給出相同的結果
((a - b) - c) - d因為最左邊的
-首先繫結到它的兩個運算元。從右到左關聯的一個例子是取消引用
*和後增量++運算子。兩者都具有相同的優先順序,因此如果它們用在諸如的表示式中* ptr ++,這相當於
* (ptr ++)因為最右邊的一元運算子(
++)首先繫結到它的單個運算元。