竅門: Ctrl+F 快速查找
優(yōu)先級 | 運(yùn)算符 | 描述 | 結(jié)合性 |
---|---|---|---|
1 | :: | 范圍解析 | 自左向右 |
2 | ++ -- | 后綴自增/后綴自減 | |
() | 括號 | ||
[] | 數(shù)組下標(biāo) | ||
. | 成員選擇(對象) | ||
?> | 成員選擇(指針) | ||
3 | ++ -- | 前綴自增/前綴自減 | 自右向左 |
+ ? | 加/減 | ||
! ~ | 邏輯非/按位取反 | ||
(type) | 強(qiáng)制類型轉(zhuǎn)換 | ||
* | 取指針指向的值 | ||
& | 某某的地址 | ||
sizeof | 某某的大小 | ||
new,new[] | 動態(tài)內(nèi)存分配/動態(tài)數(shù)組內(nèi)存分配 | ||
delete,delete[] | 動態(tài)內(nèi)存釋放/動態(tài)數(shù)組內(nèi)存釋放 | ||
4 | .* ->* | 成員對象選擇/成員指針選擇 | 自左向右 |
5 | * / % | 乘法/除法/取余 | |
6 | + ? | 加號/減號 | |
7 | << >> | 位左移/位右移 | |
8 | < <= | 小于/小于等于 | |
> >= | 大于/大于等于 | ||
9 | == != | 等于/不等于 | |
10 | & | 按位與 | |
11 | ^ | 按位異或 | |
12 | | | 按位或 | |
13 | && | 與運(yùn)算 | |
14 | || | 或運(yùn)算 | |
15 | ?: | 三目運(yùn)算符 | 自右向左 |
16 | = | 賦值 | |
+= ?= | 相加后賦值/相減后賦值 | ||
*= /= %= | 相乘后賦值/相除后賦值/取余后賦值 | ||
<<= >>= | 位左移賦值/位右移賦值 | ||
&= ^= |= | 位與運(yùn)算后賦值/位異或運(yùn)算后賦值/位或運(yùn)算后賦值 | ||
17 | throw | 拋出異常 | |
18 | , | 逗號 | 自左向右 |
優(yōu)先級 | 運(yùn)算符 | 描述 | 例子 | 結(jié)合性 |
---|---|---|---|---|
1 |
() [] -> . :: ++ -- |
調(diào)節(jié)優(yōu)先級的括號操作符 數(shù)組下標(biāo)訪問操作符 通過指向?qū)ο蟮闹羔樤L問成員的操作符 通過對象本身訪問成員的操作符 作用域操作符 后置自增操作符 后置自減操作符 |
(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 |
邏輯取反操作符 按位取反(按位取補(bǔ)) 前置自增操作符 前置自減操作符 一元取負(fù)操作符 一元取正操作符 解引用操作符 取地址操作符 類型轉(zhuǎn)換操作符 返回對象占用的字節(jié)數(shù)操作符 |
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 |
* / % |
乘法操作符 除法操作符 取余數(shù)操作符 |
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 |
= += -= *= /= %= &= ^= |= <<= >>= |
賦值操作符 復(fù)合賦值操作符(加法) 復(fù)合賦值操作符(減法) 復(fù)合賦值操作符(乘法) 復(fù)合賦值操作符(除法) 復(fù)合賦值操作符(取余) 復(fù)合賦值操作符(按位與) 復(fù)合賦值操作符(按位異或) 復(fù)合賦值操作符(按位或) 復(fù)合賦值操作符(按位左移) 復(fù)合賦值操作符(按位右移) |
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++)... | 從左到右 |