c語言運算子優先順序
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目(++、–、!(邏輯取反)、~(按位取反))運算子、條件(?)運算子、賦值運算子。其它的都是從左至右結合。
1.具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式
相關,與陣列相關,而->及是取結構成員。
2.其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的真正的運
算符中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此p++與(p++)等效是
亳無疑問的。
3.接下來是算術運算子,*、/、%的優先順序當然比+、-高了,移位運算子(>>,<<,按位的算術運算發)緊隨其後。
4.其次的關係運算子中,<、<=、>、>=要比==、!=高乙個級別,不大好理解。
5.所有的邏輯操作符都具有不同的優先順序(單目邏輯運算子除外,!和~)。邏輯位操作符的"與(&)"比"或(|)"高,而"異或(^)"則在它們之間。跟在其後的&&比||高。(所有的邏輯運算子的優先順序都不同,位邏輯運算子比普通邏輯運算子高)
6接下來的是條件運算子,賦值運算子及逗號運算子。
在c語言中,只有4個運算子規定了運算方向,它們是&&(邏輯與)、||(邏輯或)、條件運算子(?)及賦值運算子(=)。&&(邏輯與)、||(邏輯或)都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如a=0&&b;符的左邊位0,則右邊表示式b就不再判斷。在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的乙個進行求值。賦值表示式則規定先對右邊的表示式求值,因此使a=b=c成為可能。
初——單——算,關——邏,條——賦——逗
斷句如上。怎麼記憶呢?
我是這樣記憶的:加粗標紅表示運算子的簡稱。
初次單獨找你算賬,(因為你和關羽有仇)
關羽帶著兵巡邏(因為你躲了起來)
你跑到別處了,隱姓埋名,「挑』'著「豆腐』賣。(當了賣豆腐的)
豆腐際上是「賦』、逗』』
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
C語言運算子優先順序
優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...
c語言運算子優先順序
優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...