C++操作符的優先順序

pamxy發表於2013-03-20

轉自:http://www.cnblogs.com/mx113/articles/1603972.html

C++操作符的優先順序

操作符及其結合性

功能

用法



L
:: 
:: 
::
全域性作用域  
類作用域  
名字空間作用域
::name 
class::name 
namespace::name






-> 
[] 
() 
() 
成員選擇  
成員選擇  
下標  
函式呼叫  
型別構造  
object.member 
pointer->member 
variable[expr] 
name(expr_list) 
type(expr_list)





++ 
-- 
typeid 
typeid 
顯示強制型別轉換  
後自增操作  
後自減操作  
型別ID 
執行時型別ID 
型別轉換  
lvalue++ 
lvalue-- 
typeid(type) 
typeid(expr) 
cast_name<type>(expr)













R
sizeof 
sizeof 
++ 
-- 






() 
new 
delete 
delete[]
物件的大小  
型別的大小  
前自增操作  
前自減操作  
位求反  
邏輯非  
一元負號  
一元正號  
解引用  
取地址  
型別轉換  
建立物件  
釋放物件  
釋放陣列
sizeof expr 
sizeof(type) 
++lvalue 
--lvalue 
~expr 
!expr 
-expr 
+expr 
*expr 
&expr 
(type)expr 
new type 
delete expr 
delete []expr

L
->* 
.*
指向成員操作的指標  
指向成員操作的指標
ptr->*ptr_to_member 
obj.*ptr_to_member


L


%
乘法  
除法  
求模(求餘)
expr * expr 
expr / expr 
expr % expr

L

-
加法  
減法
expr + expr 
expr - expr

L
<<  
>>
位左移  
位右移
expr << expr 
expr >> expr



L
<  
<= 
>  
>=
小於  
小於或等於  
大於  
大於或等於
expr < expr 
expr <= expr 
expr > expr 
expr >= expr

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

*=,/=,%= 
+=,-= 
<<=,>>= 
&=,|=,^=
賦值操作  
複合賦值操作  

Lvalue= expr 
Lvalue+= expr 
……  

R throw 丟擲異常 Throw expr
L , 逗號 Expr, expr
記憶方法:
--摘自《C語言程式設計實用問答》       
    問題:如何記住運算子的15種優先順序和結合性?    
    解答:C語言中運算子種類比較繁多,優先順序有15種,結合性有兩種。    
    如何記憶兩種結合性和15種優先順序?下面講述一種記憶方法。    
    結合性有兩種,一種是自左至右,另一種是自右至左,大部分運算子的結合性是自左至右,只有單目運算子、三目運算子的賦值運算子的結合性自右至左。    
    優先順序有15種。記憶方法如下:    
    記住一個最高的:構造型別的元素或成員以及小括號。    
    記住一個最低的:逗號運算子。    
    剩餘的是一、二、三、賦值。    
    意思是單目、雙目、三目和賦值運算子。    
    在諸多運算子中,又分為:    
    算術、關係、邏輯。    
    兩種位操作運算子中,移位運算子在算術運算子後邊,邏輯位運算子在邏輯運算子的前面。再細分如下:    
    算術運算子分     *,/,%高於+,-。    
    關係運算子中,〉,〉=,<,<=高於==,!=。    
    邏輯運算子中,除了邏輯求反(!)是單目外,邏輯與(&&)高於邏輯或(||)。    
    邏輯位運算子中,除了邏輯按位求反(~)外,按位與(&)高於按位半加(^),高於按位或(|)。    
    這樣就將15種優先順序都記住了,再將記憶方法總結如下:    
    去掉一個最高的,去掉一個最低的,剩下的是一、二、三、賦值。雙目運算子中,順序為算術、關係和邏輯,移位和邏輯位插入其中。

相關文章