C 運算子優先順序

2021-09-26 12:53:58 字數 2436 閱讀 2074

經常記不住c++運算子優先順序?

優先順序操作符

描述例子

結合性1

() -> . :: ++ –

調節優先順序的括號操作符 陣列下標訪問操作符 通過指向物件的指標訪問成員的操作符 通過物件本身訪問成員的操作符 作用域操作符 後置自增操作符 後置自減操作符

(a + b) / 4; array[4] = 2; ptr->age = 34; obj.age = 34; class::age = 2; for( i = 0; i < 10; i++ ) … for( i = 10; i > 0; i-- ) …

從左到右

2! ~ ++ – - + * & (type) sizeof

邏輯取反操作符 按位取反(按位取補) 前置自增操作符 前置自減操作符 一元取負操作符 一元取正操作符 解引用操作符 取位址操作符 型別轉換操作符 返回物件占用的位元組數操作符

if( !done ) … flags = ~flags; for( i = 0; i < 10; ++i ) … for( i = 10; i > 0; --i ) … int i = -1; int i = +1; data = *ptr; address = &obj; int i = (int) floatnum; int size = sizeof(floatnum);

從右到左

3->* .*

在指標上通過指向成員的指標訪問成員的操作符 在物件上通過指向成員的指標訪問成員的操作符

ptr->*var = 24; obj.*var = 24;

從左到右

4* / %

乘法操作符 除法操作符 取餘數操作符

int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3;

從左到右

5+ -

加法操作符 減法操作符

int i = 2 + 3; int i = 5 - 1;

從左到右

6<< >>

按位左移操作符 按位右移操作符

int flags = 33 << 1; int flags = 33 >> 1;

從左到右

7< <= > >=

小於比較操作符 小於或等於比較操作符 大於比較操作符 大於或等於比較操作符

if( i < 42 ) … if( i <= 42 ) … if( i > 42 ) … if( i >= 42 ) …

從左到右

8== !=

等於比較操作符 不等於比較操作符

if( i == 42 ) … if( i != 42 ) …

從左到右9&

按位與操作符

flags = flags & 42;

從左到右10^

按位異或操作符

flags = flags ^ 42;

從左到右11|

按位或操作符

flags = flags | 42;

從左到右

12&&

邏輯與操作符

if( conditiona && conditionb ) …

從左到右

13||

邏輯或操作符

if( conditiona || conditionb ) …

從左到右

14? :

三元條件操作符

int i = (a > b) ? a : b;

從右到左

15= += -= *= /= %= &= ^= |= <<= >>=

賦值操作符 復合賦值操作符(加法) 復合賦值操作符(減法) 復合賦值操作符(乘法) 復合賦值操作符(除法) 復合賦值操作符(取餘) 復合賦值操作符(按位與) 復合賦值操作符(按位異或) 復合賦值操作符(按位或) 復合賦值操作符(按位左移) 復合賦值操作符(按位右移)

int a = b; a += 3; b -= 4; a *= 5; a /= 2; a %= 3; flags &= new_flags; flags ^= new_flags; flags |= new_flags; flags <<= 2; flags >>= 2;

從右到左16,

逗號操作符

for( i = 0, j = 0; i < 10; i++, j++ ) …

從左到右

優先順序最高的,是作用域執行符;

後自增與自減運算子 與 成員訪問運算子 排第二;

排在第三的是值處理運算子與動態記憶體的分配、釋放;

接下來的按照這個順序排列:算術運算子 > 關係運算子 > 位運算子 > 邏輯運算子 > 賦值運算子

*(解引用運算子) 的優先順序比後置運算子、成員訪問運算子的優先順序低;

左移、右移運算子是算術運算子,但優先順序比加、減運算子的低;

位運算子的優先順序是: & > ^ > | ;

邏輯運算子與的優先順序大於或的優先順序;

復合賦值運算子與 = 都是賦值運算子,優先順序最低;

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

運算子優先順序 Python 運算子優先順序

python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...

運算子優先順序 PHP運算子優先順序

php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...