1級優先順序左結合
() 圓括號
下標運算子
-> 指向結構體
成員運算子
. 結構體成員運算子
2級優先順序右結合
! 邏輯
非運算子
~ 按位取反運算子
++ 字首增量運算子
-- 字首增量運算子
+ 正號運算子
- 負號運算子
(型別) 型別轉換
運算子* 指標運算子
& 位址與運算子
sizeof 長度運算子
3級優先順序左結合
* 乘法
運算子/ 除法運算子
% 取餘運算子
4級優先順序左結合
+ 加法運算子
- 減法運算子
5級優先順序左結合
<< 左移運算子
>> 右移運算子
6級優先順序左結合
<、<=、>、>= 關係運算子
7級優先順序左結合
== 等於運算子
!= 不等於運算子
8級優先順序左結合
& 按位與運算子
9級優先順序左結合
^ 按位異或
運算子10級優先順序左結合
| 按位或運算子
11級優先順序左結合
&& 邏輯與
運算子12級優先順序左結合
|| 邏輯或
運算子13級優先順序右結合
? : 條件運算子
14級優先順序右結合
= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算子
15級優先順序左結合
, 逗號運算子
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符
具有最低的優先順序。
所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。
具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,與陣列
相關,而->及.是取結構成員。
其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
另外在c語言裡 沒有前置後置之分 因為++ -- 是右結合所以 右側優先運算 表現為 "後置優先順序比較高" 的假象 前置和後置的區分是因為運算子過載
而後加入c++的
接下來是算術
運算子,*、/、%的優先順序當然比+、-高了。
移位運算子
緊隨其後。
其次的關係運算子中,< <= > >=要比 == !=高乙個級別,不大好理解。
所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其後的&&比||高。
接下來的是條件運算子,賦值運算子及逗號運算子。
在c語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。
&&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。
在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的乙個進行求值。
賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。
bash特殊符號
bash的萬用字元與特殊符號 在 bash 的操作環境中還有乙個非常有用的功能,那就是萬用字元 wildcard 我們利用 bash 處理資料就更方便了!底下我們列出一些常用的萬用字元喔 符號意義 代表 0 個到無窮多個 任意字元 代表 一定有乙個 任意字元 同樣代表 一定有乙個在括號內 的字元 非...
oracle 特殊符號
oracle 特殊符號 oracle萬用字元,運算子的使用 用於where比較條件的有 等於 包含 in not in exists not exists 範圍 between.and not between.and 匹配測試 like not like null測試 is null is not ...
shell 特殊符號
變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是 1,第二個引數是 2。傳遞給指令碼或函式的引數個數。傳遞給指令碼或函式的所有引數。傳遞給指令碼或函式的所有引數。被雙引號 包含時,與 稍有不同,下面將會講到。上個命令的退出狀態,或函式的...