C++操作符的優(yōu)先級(jí)
|
操作符及其結(jié)合性
|
功能
|
用法
|
L L L |
:: :: :: |
全局作用域 類作用域 名字空間作用域 |
::name class::name namespace::name |
L L L L L
|
. -> [] () ()
|
成員選擇 成員選擇 下標(biāo) 函數(shù)調(diào)用 類型構(gòu)造
|
object.member pointer->member variable[expr] name(expr_list) type(expr_list) |
R R R R R
|
++ -- typeid typeid 顯示強(qiáng)制類型轉(zhuǎn)換
|
后自增操作 后自減操作 類型ID 運(yùn)行時(shí)類型ID 類型轉(zhuǎn)換
|
lvalue++ lvalue-- typeid(type) typeid(expr) cast_name<type>(expr) |
R R R R R R R R R R R R R R |
sizeof sizeof ++ -- ~ ! - + * & () new delete delete[] |
對(duì)象的大小 類型的大小 前自增操作 前自減操作 位求反 邏輯非 一元負(fù)號(hào) 一元正號(hào) 解引用 取地址 類型轉(zhuǎn)換 創(chuàng)建對(duì)象 釋放對(duì)象 釋放數(shù)組 |
sizeof expr sizeof(type) ++lvalue --lvalue ~expr !expr -expr +expr *expr &expr (type)expr new type delete expr delete []expr |
L L |
->* .* |
指向成員操作的指針 指向成員操作的指針 |
ptr->*ptr_to_member obj.*ptr_to_member |
L L L |
* / % |
乘法 除法 求模(求余) |
expr * expr expr / expr expr % expr |
L L |
+ - |
加法 減法 |
expr + expr expr - expr |
L L |
<< >> |
位左移 位右移 |
expr << expr expr >> expr |
L L L L |
< <= > >= |
小于 小于或等于 大于 大于或等于 |
expr < expr expr <= expr expr > expr expr >= expr |
L R |
== != |
相等 不等 |
Expr == expr Expr != expr |
R |
& |
位與 |
Expr & expr |
R |
^ |
位異或 |
Expr ^ expr |
R |
| |
位或 |
Expr | expr |
R |
&& |
邏輯與 |
Expr && expr |
R |
|| |
邏輯或 |
Expr || expr |
R |
?: |
條件操作 |
Expr ? expr : expr |
R R R R R |
= *=,/=,%= +=,-= <<=,>>= &=,|=,^= |
賦值操作 符合賦值操作
|
Lvalue= expr Lvalue+= expr ……
|
R |
throw |
拋出異常 |
Throw expr |
L |
, |
逗號(hào) |
Expr, expr |
記憶方法:
--摘自《C語言程序設(shè)計(jì)實(shí)用問答》 -呂鳳翥 呂 濤著
問題:如何記住運(yùn)算符的15種優(yōu)先級(jí)和結(jié)合性?
解答:C語言中運(yùn)算符種類比較繁多,優(yōu)先級(jí)有15種,結(jié)合性有兩種。
如何記憶兩種結(jié)合性和15種優(yōu)先級(jí)?下面講述一種記憶方法。
結(jié)合性有兩種,一種是自左至右,另一種是自右至左,大部分運(yùn)算符的結(jié)合性是自左至右,只有單目運(yùn)算符、三目運(yùn)算符的賦值運(yùn)算符的結(jié)合性自右至左。
優(yōu)先級(jí)有15種。記憶方法如下:
記住一個(gè)最高的:構(gòu)造類型的元素或成員以及小括號(hào)。
記住一個(gè)最低的:逗號(hào)運(yùn)算符。
剩余的是一、二、三、賦值。
意思是單目、雙目、三目和賦值運(yùn)算符。
在諸多運(yùn)算符中,又分為:
算術(shù)、關(guān)系、邏輯。
兩種位操作運(yùn)算符中,移位運(yùn)算符在算術(shù)運(yùn)算符后邊,邏輯位運(yùn)算符在邏輯運(yùn)算符的前面。再細(xì)分如下:
算術(shù)運(yùn)算符分 *,/,%高于+,-。
關(guān)系運(yùn)算符中,》,》=,《,〈=高于==,!=。
邏輯運(yùn)算符中,除了邏輯求反(!)是單目外,邏輯與(&&)高于邏輯或(||)。
邏輯位運(yùn)算符中,除了邏輯按位求反(~)外,按位與(&)高于按位半加(^),高于按位或(|)。
這樣就將15種優(yōu)先級(jí)都記住了,再將記憶方法總結(jié)如下:
去掉一個(gè)最高的,去掉一個(gè)最低的,剩下的是一、二、三、賦值。雙目運(yùn)算符中,順序?yàn)樗阈g(shù)、關(guān)系和邏輯,移位和邏輯位插入其中。