C++运算符
一、C++运算符分类及核心用法
C++运算符按功能可分为7大类,以下是每类的核心运算符、作用和示例:
1. 算术运算符(处理数值计算)
| 运算符 | 作用 | 示例 | 说明 |
|---|---|---|---|
+ |
加法/正号 | a + b / +5 |
数值相加,或表示正数 |
- |
减法/负号 | a - b / -5 |
数值相减,或表示负数 |
* |
乘法 | a * b |
数值相乘 |
/ |
除法 | a / b |
整数除法取整,浮点数正常除 |
% |
取模(余数) | a % b |
仅适用于整数,结果为余数 |
++ |
自增 | a++ / ++a |
后置先使用后+1,前置先+1后使用 |
-- |
自减 | a-- / --a |
后置先使用后-1,前置先-1后使用 |
示例代码:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 3;
cout << "a + b = " << a + b << endl; // 输出13
cout << "a / b = " << a / b << endl; // 输出3(整数除法)
cout << "a % b = " << a % b << endl; // 输出1(余数)
int c = 5;
cout << c++ << endl; // 输出5(后置自增,先输出再+1)
cout << ++c << endl; // 输出7(前置自增,先+1再输出)
return 0;
}
2. 赋值运算符(给变量赋值)
基础赋值:=
复合赋值(算术+赋值):+=、-=、*=、/=、%=
示例:
int a = 10;
a += 5; // 等价于a = a + 5,结果a=15
a *= 2; // 等价于a = a * 2,结果a=30
3. 比较运算符(判断条件,返回bool值)
| 运算符 | 作用 | 示例 |
|---|---|---|
== |
等于 | a == b |
!= |
不等于 | a != b |
> |
大于 | a > b |
< |
小于 | a < b |
>= |
大于等于 | a >= b |
<= |
小于等于 | a <= b |
注意:=是赋值,==是判断相等,新手易混淆!
4. 逻辑运算符(组合条件判断)
| 运算符 | 作用 | 示例 | 短路特性 |
|---|---|---|---|
&& |
逻辑与 | a > 0 && b > 0 |
左为假则右不执行 |
| ` | ` | 逻辑或 | |
! |
逻辑非 | !a |
取反(真变假,假变真) |
示例:
int a = 0, b = 5;
if (a > 0 && ++b > 0) {} // a>0为假,++b不执行,b仍为5
if (a > 0 || ++b > 0) {} // a>0为假,执行++b,b变为6
5. 位运算符(操作二进制位,偏底层)
| 运算符 | 作用 | 示例 |
|---|---|---|
& |
按位与 | a & b |
| ` | ` | 按位或 |
^ |
按位异或 | a ^ b |
~ |
按位取反 | ~a |
<< |
左移(乘2) | a << 1 |
>> |
右移(除2) | a >> 1 |
示例:
int a = 6; // 二进制:0110
int b = 3; // 二进制:0011
cout << (a & b) << endl; // 0010 → 输出2
cout << (a << 1) << endl; // 1100 → 输出12
6. 指针/引用运算符(核心特色)
| 运算符 | 作用 | 示例 |
|---|---|---|
& |
取地址(变量→指针) | int* p = &a |
* |
解引用(指针→变量) | *p = 10 |
-> |
指针访问成员 | p->name |
. |
对象访问成员 | obj.name |
示例:
#include <iostream>
#include <string>
using namespace std;
struct Person {
string name = "Tom";
};
int main() {
int a = 5;
int* p = &a; // &取a的地址,p指向a
*p = 10; // *解引用,修改a的值为10
cout << a << endl; // 输出10
Person obj;
Person* p_obj = &obj;
cout << p_obj->name << endl; // ->访问指针指向对象的成员,输出Tom
cout << obj.name << endl; // .访问对象成员,输出Tom
return 0;
}
7. 其他常用运算符
sizeof:计算类型/变量的字节大小 →sizeof(int)(输出4)、sizeof(a)?::三目运算符(简化if-else)→a > b ? a : b(a>b返回a,否则返回b),:逗号运算符(从左到右执行,返回最后一个值)→(a=5, b=10, a+b)(返回15)
二、运算符优先级(核心规则)
优先级决定运算执行顺序,新手记核心即可:
- 括号
()优先级最高(优先算括号内); - 单目运算符(
!、++、--、&、*)> 算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符; - 同优先级按结合性执行(如赋值运算符
=是从右到左:a = b = 5→ 先b=5,再a=b)。
示例:
// 先算*,再算+,最后算==
if (a + b * c == 10) {}
// 加括号明确顺序,可读性更高(推荐)
if (a + (b * c) == 10) {}
总结
- C++运算符按功能可分为算术、赋值、比较、逻辑、位运算、指针/引用等7大类,其中指针/引用运算符是C++的核心特色;
- 优先级:括号 > 单目运算符 > 算术 > 比较 > 逻辑 > 赋值,不确定时加括号更清晰;
- 易错点:
=(赋值)和==(相等)、++/--的前后置区别、逻辑运算符的短路特性。

浙公网安备 33010602011771号