C++中运算符总结

为了便于以后常看相关运算符,故总结C++中,常用运算符如下:

优先级

运算符

名称与含义

使用形式

结合方向

1

[]

数组下标

数组名[常量表达式]

左到右

()

圆括号

(表达式)/函数名(形参表)

.

成员选择(对象)

对象.成员名

->

成员选择(指针)

对象指针->成员名

2(单目)

-

负号运算符

-表达式

右到左

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

size of

长度运算符

sizeof(表达式)

3(双目)

/

表达式/表达式

左到右

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4(双目)

+

表达式+表达式

左到右

-

表达式-表达式

5(双目)

<< 

左移

变量<<表达式

左到右

>> 

右移

变量>>表达式

6(双目)

大于

表达式>表达式

左到右

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7(双目)

==

等于

表达式==表达式

左到右

!=

不等于

表达式!=表达式

8(双目)

&

按位与

表达式&表达式

左到右

^

按位异或

表达式^表达式

|

按位或

表达式|表达式

&&

逻辑与

表达式&&表达式

||

逻辑或

表达式||表达式

9(三目)

?:

条件运算符

表达式1?表达式2:表达式3

右到左

10

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

标量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量<<=表达式

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

11

逗号运算符

表达式,表达式…

左到右

备注:同一优先级的运算符,运算次序由结合方向决定

           算数运算符 > 关系运算符 > 逻辑和 > 逻辑或 > 赋值    


C++中的运算符包括多种类型,各有不同的优先级结合方向和使用形式。 ### 运算符优先级结合方向 C++运算符优先级从高到低排列如下: 1. **括号成员运算符**:包括`[]`数组下标(使用形式为数组名[常量表达式])、`()`圆括号(用于表达式或函数调用)、`.`成员选择(对象,使用形式为对象.成员名)和`->`成员选择(指针,使用形式为对象指针->成员名),结合方向是从左到右[^1]。 2. **单目运算符**:如`-`负号运算符(使用形式为-常量)、`(类型)`强制类型转换(使用形式为(数据类型)表达式)、`++`自增运算符(使用形式为++变量名或变量名++)、`--`自减运算符(使用形式为--变量名或变量名--)、`*`取值运算符(使用形式为*指针变量)、`&`取地址运算符(使用形式为&变量名)、`!`逻辑非运算符(使用形式为!表达式)、`~`按位取反运算符(使用形式为~表达式)、`sizeof`长度运算符(使用形式为sizeof(表达式)),结合方向是从右到左[^1]。 3. **双目运算符 - 乘除模运算**:`/`除(表达式/表达式)、`*`乘(表达式*表达式)、`%`余数(取模,整型表达式%整型表达式),结合方向从左到右[^1]。 4. **双目运算符 - 加减运算**:`+`加(表达式+表达式)、`-`减(表达式-表达式),结合方向从左到右[^1]。 5. **双目运算符 - 移位运算**:`<<`左移(变量<<表达式)、`>>`右移(变量>>表达式),结合方向从左到右[^1]。 6. **双目运算符 - 关系运算**:`>`大于(表达式>表达式)、`>=`大于等于(表达式>=表达式)、`<`小于(表达式<表达式)、`<=`小于等于(表达式<=表达式),结合方向从左到右[^1]。 7. **双目运算符 - 相等性运算**:`==`等于(表达式==表达式)、`!=`不等于(表达式!=表达式),结合方向从左到右[^1]。 8. **双目运算符 - 按位运算**:`&`按位(表达式&表达式),结合方向从左到右[^1]。 9. **双目运算符 - 按位异或运算**:`^`按位异或(表达式^表达式),结合方向从左到右[^1]。 10. **双目运算符 - 按位或运算**:`|`按位或(表达式|表达式),结合方向从左到右[^1]。 11. **双目运算符 - 逻辑运算**:`&&`逻辑(表达式&&表达式),结合方向从左到右[^1]。 12. **双目运算符 - 逻辑或运算**:`||`逻辑或(表达式||表达式),结合方向从左到右[^1]。 13. **三目运算符**:`?:`条件运算符(表达式?表达式2:表达式3),结合方向从右到左[^1]。 14. **赋值运算符**:包括`=`赋值(变量=表达式)、`/=`除后赋值(变量/=表达式)、`*=`乘后赋值(变量*=表达式)、`%=`取模后赋值(变量%=表达式)、`+=`加后赋值(变量+=表达式)、`-=`减后赋值(变量-=表达式)、`<<=`左移后赋值(变量<<=表达式)、`>>=`右移后赋值(变量>>=表达式)、`&=`按位后赋值(变量&=表达式)等,结合方向从右到左[^1]。 ### 运算符重载 在C++中可以对运算符进行重载。对于任何函数参数,如果仅需要读取而不是改变它,默认地应当作为`const`引用来传递它。对于普通运算符(如“+”、“-”等)和布尔运算符不会改变参数,所以也需要用`const`引用传递参数。可以在类中利用成员函数实现运算符重载,例如在`Person`类中实现`+`运算符的重载: ```cpp class Person { public: Person(int age, int b) { m_Age = age; m_B = b; } Person operator+(Person &p) { Person temp; temp.m_Age = this->m_Age + p.m_Age; temp.m_B = this->m_B + p.m_B; return temp; } public: int m_Age; int m_B; }; ``` 通过上述代码,`Person`类对象之间可以使用`+`运算符进行相加操作[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值