1級優先順序 左結合() 圓括號 [] 下標運算子 -> 指向結構體成員運算子 . 結構體成員運算子 2級優先順序 右結合 ! 邏輯非運算子 ~ 按位取反運算子 ++ 自增運算子 -- 自減運算子 - 負號運算子 (型別) 型別轉換運算子 * 指標運算子 & 地址與運算子 sizeof 長度運算子 3級優先順序 左結合 * 乘法運算子 / 除法運算子 % 取餘運算子 4級優先順序 左結合+ 加法運算子 - 減法運算子 5級優先順序 左結合 > 右移運算子 6級優先順序 左結合 、>= 關係運算符 7級優先順序 左結合 == 等於運算子 != 不等於運算子 8級優先順序 左結合 & 按位與運算子 9級優先順序 左結合 ^ 按位異或運算子 10級優先順序 左結合 | 按位或運算子 11級優先順序 左結合 && 邏輯與運算子 12級優先順序 左結合 || 邏輯或運算子 13級優先順序 右結合 ? : 條件運算子 14級優先順序 右結合 = += -= *= /= %= &= ^= |= >= 全為賦值運算子 15級優先順序 左結合 逗號運算子優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號運算子具有最低的優先順序。 所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。 具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,[]與陣列相關,而->及.是取結構成員。 其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。 接下來是算術運算子,*、/、%的優先順序當然比+、-高了。 移位運算子緊隨其後。 其次的關係運算符中, >=要比 == !=高一個級別,不大好理解。 所有的邏輯運算子都具有不同的優先順序(單目運算子出外,!和~) 邏輯位運算子的"與"比"或"高,而"異或"則在它們之間。 跟在其後的&&比||高。 接下來的是條件運算子,賦值運算子及逗號運算子。 在C語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。 &&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。 在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。 賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。 C++運算子優先順序
1級優先順序 左結合() 圓括號 [] 下標運算子 -> 指向結構體成員運算子 . 結構體成員運算子 2級優先順序 右結合 ! 邏輯非運算子 ~ 按位取反運算子 ++ 自增運算子 -- 自減運算子 - 負號運算子 (型別) 型別轉換運算子 * 指標運算子 & 地址與運算子 sizeof 長度運算子 3級優先順序 左結合 * 乘法運算子 / 除法運算子 % 取餘運算子 4級優先順序 左結合+ 加法運算子 - 減法運算子 5級優先順序 左結合 > 右移運算子 6級優先順序 左結合 、>= 關係運算符 7級優先順序 左結合 == 等於運算子 != 不等於運算子 8級優先順序 左結合 & 按位與運算子 9級優先順序 左結合 ^ 按位異或運算子 10級優先順序 左結合 | 按位或運算子 11級優先順序 左結合 && 邏輯與運算子 12級優先順序 左結合 || 邏輯或運算子 13級優先順序 右結合 ? : 條件運算子 14級優先順序 右結合 = += -= *= /= %= &= ^= |= >= 全為賦值運算子 15級優先順序 左結合 逗號運算子優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號運算子具有最低的優先順序。 所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。 具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,[]與陣列相關,而->及.是取結構成員。 其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。 接下來是算術運算子,*、/、%的優先順序當然比+、-高了。 移位運算子緊隨其後。 其次的關係運算符中, >=要比 == !=高一個級別,不大好理解。 所有的邏輯運算子都具有不同的優先順序(單目運算子出外,!和~) 邏輯位運算子的"與"比"或"高,而"異或"則在它們之間。 跟在其後的&&比||高。 接下來的是條件運算子,賦值運算子及逗號運算子。 在C語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。 &&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。 在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。 賦值表示式則規定先對右邊的表示式求值,因此使 a = b = c = 6;成為可能。 C++運算子優先順序