taoyuan7788

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

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种优先级都记住了,再将记忆方法总结如下:    
    去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。

posted on 2013-07-12 12:14  taoyuan7788  阅读(133)  评论(0编辑  收藏  举报