目錄:
一:引言
二:優先級表
執行個體:
記憶口訣 :
括号成員是老大; // 括号運算符 []() 成員運算符. -> 全體單目排老二; // 所有的單目運算符比如++、 --、 +(正)、 -(負) 、指針運算*、& 乘除餘三,加減四; // 這個"餘"是指取餘運算即% 移位五,關系六; // 移位運算符:<< >> ,關系:> < >= <= 等 等與不等排行七; // 即 == 和 != 位與異或和位或; // 這幾個都是位運算: 位與(&)異或(^)位或(|) "三分天下"八九十; 邏輯與,邏輯或; // 邏輯運算符: || 和 && 十一十二緊挨着; // 注意順序: 優先級(||) 底于 優先級(&&) 條件隻比指派高, // 三目運算符優先級排到 13 位隻比指派運算符和 "," 高 逗号運算最低級! //逗号運算符優先級最低
一:引言
運算符的優先級确定表達式中項的組合
這會影響到一個表達式如何計算
某些運算符比其他運算符有更高的優先級,例如,乘除運算符具有比加減運算符更高的優先級
例如 x = 7 + 3 * 2,在這裡,x 被指派為 13,而不是 20,因為運算符 * 具有比 + 更高的優先級,是以首先計算乘法 3*2,然後再加上 7。
下表将按運算符優先級從高到低列出各個運算符
具有較高優先級的運算符出現在表格的上面
具有較低優先級的運算符出現在表格的下面
在表達式中,較高優先級的運算符會優先被計算
二:優先級表
類别 | 運算符 | 結合性 |
---|---|---|
字尾 | () [] -> . ++ - - | 從左到右 |
一進制 | + - ! ~ ++ - - (type)* & sizeof | 從右到左 |
乘除 | * / % | 從左到右 |
加減 | + - | 從左到右 |
移位 | << >> | 從左到右 |
關系 | < <= > >= | 從左到右 |
相等 | == != | 從左到右 |
位與 AND | & | 從左到右 |
位異或 XOR | ^ | 從左到右 |
位或 OR | | | 從左到右 |
邏輯與 AND | && | 從左到右 |
邏輯或 OR | || | 從左到右 |
條件 | ?: | 從右到左 |
指派 | = += -= *= /= %=>>= <<= &= ^= |= | 從右到左 |
逗号 | , | 從左到右 |
執行個體:
#include <stdio.h>
main()
{
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
printf("(a + b) * c / d 的值是 %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
printf("((a + b) * c) / d 的值是 %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
printf("(a + b) * (c / d) 的值是 %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
printf("a + (b * c) / d 的值是 %d\n" , e );
return 0;
}
運作結果:
(a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是 90
a + (b * c) / d 的值是 50