您的位置:首页 > 编程语言 > C语言/C++

C++运算符优先级

2015-08-28 20:32 651 查看
C++语言操作符优先级
优先级
运算符
含 义
示 例
结合方向
要求运算

对象的个数
可重载性
1
::
全局解析
::x
自右至左
一元操作符
不可重载
::
类域解析
X::x
自左至右
二元操作符
不可重载
2
.
直接成员选择运算符
s.len
自左至右
二元操作符
不可重载
( )
圆括号
可重载
( )
函数调用
rand( )
( )
类型构造
int( ch)
[ ]
下标运算符
a[i]
二元操作符
->
间接成员选择运算符
p->len
二元操作符
++
后增
n++
自右至左
一元操作符
- -
后减
n- -
一元操作符
3
!
逻辑非运算符
!p
自右至左
一元操作符
可重载
~
按位取反运算符
~s
++
前增运算符
++n
- -
前减运算符
- -n
-
负号运算符
-n
*
反引用运算符
*p
&
求地址运算符
&x
new
空间分配
new int(9)
delete
空间释放
delete p
(类型)
类型转换运算符
(int)ch
二元操作符
sizeof
长度运算符
sizeof(a)
一元操作符
不可重载
4
*
乘法运算符
m*n
自左至右
二元操作符
可重载
/
除法运算符
m/n
%
求余运算符
m%n
5
+
加法运算符
m+n
自左至右
二元操作符
可重载
-
减法运算符
m-n
6
<<
左移运算符
m<<n
自左至右
二元操作符
可重载
>>
右移运算符
m>>n
7
<
小于
x<y
自左至右
二元操作符
可重载
<=
小于等于
x<=y
>
大于
x>y
>=
大于等于
x>=y
8
==
等于运算符
x==y
自左至右
二元操作符
可重载
!=
不等于运算符
x!=y
9
&
按位与运算符
s&t
自左至右
二元操作符
可重载
10
^
按位异或运算符
s^t
自左至右
二元操作符
可重载
11
|
按位或运算符
s|t
自左至右
二元操作符
可重载
12
&&
逻辑与运算符
u&&v
自左至右
二元操作符
可重载
13
||
逻辑或运算符
u||v
自左至右
二元操作符
可重载
14
? :
条件运算符
u? x : y
自左至右
三元操作符
不可重载
15
=
赋值运算符
n=22
自右至左
二元操作符
可重载
+=
先加,再赋值
n+=8
-=
先减,再赋值
n-=4
*=
先乘,再赋值
n*= -1
/=
先除,再赋值
n/10
%=
先求余,再赋值
n%=10
>>=
先左移位,再赋值
n>>=1
<<=
先右移位,再赋值
N<<=1
&=
先按位与,再赋值
s&=mask
^=
先按位异或,再赋值
s^=mask
|=
先按位或,再赋值
s|=mask
16
,
逗号运算符
++m,- -n
自左至右
可重载
运算符优先级记忆方法:





说明:

C++输入输出是通过iostream库来实现的。在iostream库中,输入输出操作分别有istream(输入流)和ostream(输出流)两个类提供,而iostream则是这两个类的派生类。它允许进行双向的I/O操作。istream的输入操作可以认为是一个数据抽取的过程,通过右移操作符“>>”从输入流抽取数据;而ostream的输出操作则可以认为是一个数据插入的过程,通过左移操作符“<<”将数据插入到输出流中。

用法:cin>>a; 可将“>>”称为析取操作符 可重载

cout<<a; 可将“<<”称为插入操作符 可重载

附二

操作符及其结合性功能用法
L::global scope(全局作用域):: name
L::class scope(类作用域)class :: name
L::namespace scope(名字空间作用域)namespace :: name
L.member selectors(成员选择)object . member
L->member selectors(成员选择)pointer -> member
L[]subscript(下标)variable[expr]
L()function call(函数调用)name(expr_list)
L()type construction(类型构造)type(expr_list)
R++postfix increment(后自增操作) lvalue++
R--postfix decrement(后自减操作)lvalue--
Rtypeidtype ID(类型ID)typeid (type)
Rtypeidrun-time type ID(运行时类型 ID)typeid (expr)
Rexplicit cast

(显式强制类型转换)
type conversion(类型转换)cast_name<type>(expr)
Rsizeofsize of object(对象的大小)sizeof expr
Rsizeofsize of type(类型的大小)sizeof(type)
R++prefix increment(前自增操作)++lvalue
R--prefix decrement(前自减操作)--lvalue
R~bitwise NOT(位求反)~expr
R!logical NOT(逻辑非)!expr
R-unary minus(一元负号)=-expr
R+unary plus(一元正号)=+expr
R*dereference(解引用)*expr
R&address-of(取地址)&expr
R()type conversion(类型转换)(type) expr
Rnewallocate object(创建对象)new type
Rdeletedeallocate object(释放对象)delete expr
Rdelete[]deallocate array(释放数组)delete[] expr
L->*ptr to member select(指向成员操作的指针)ptr ->*ptr_to_member
L.*ptr to member select(指向成员操作的指针)obj .*ptr_to_member
L*multiply(乘法)expr * expr
L/divide(除法)expr/ expr
L%modulo (remainder)(求模(求余))expr % expr
L+add(加法)expr +expr
L-subtract(减法)expr - expr
L<<bitwise shift left(位左移)expr << expr
L>>bitwise shift right(位右移)expr >> expr
L<less than(小于)expr < expr
L<=less than or equal(小于或等于)expr <= expr
L>greater than(大于)expr > expr
L>=greater than or equal(大于或等于)expr >= expr
L==equality(相等)expr == expr
L!=inequality(不等)expr != expr
L&bitwise AND(位与)expr & expr
L^bitwise XOR()expr ^ expr
L|bitwise OR(位异或)expr | expr
L&&logical AND(逻辑与)expr && expr
L||logical OR(逻辑或)expr || expr
R?:conditional(条件操作)expr ? expr : expr
R=assignment(赋值操作)lvalue = expr
R*=, /=, %=,compound assign(复合赋值操作)lvalue += expr, etc.
R+=,-=,
R<<=, >>=,
R&=,|=, ^=
Rthrowthrow exception(抛出异常) throw expr
L,comma(逗号)expr, expr
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: