C++ 运算符详解
运算符是一种告诉编译器执行特定数学或逻辑操作的符号。C++ 提供了丰富的运算符,主要包括:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符(如条件运算符、逗号运算符等)
本文详细介绍了 C++ 中的各类运算符,包括算术、关系、逻辑、赋值、位运算及其他运算符。通过功能说明、表格对比和代码示例,讲解了运算符的用法、优先级及注意事项,如自增自减的区别和整数除法特性。旨在帮助读者掌握 C++ 基础语法操作。

运算符是一种告诉编译器执行特定数学或逻辑操作的符号。C++ 提供了丰富的运算符,主要包括:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符(如条件运算符、逗号运算符等)
用于执行基本的数学运算。
| 运算符 | 描述 | 示例 |
|---|---|---|
| + | 加法 | a + b |
| - | 减法 | a - b |
| * | 乘法 | a * b |
| / | 除法 | a / b |
| % | 取模(取余) | a % b |
| ++ | 自增 | a++ 或 ++a |
| -- | 自减 | a-- 或 --a |
#include <iostream>
using namespace std;
int main() {
cout << "=== 算术运算符示例 ===" << endl;
int a = 10, b = 3;
double x = 10.0, y = 3.0;
// 基本算术运算
cout << "a = " << a << ", b = " << b << endl;
cout << "a + b = " << (a + b) << endl; // 加法
cout << "a - b = " << (a - b) << endl; // 减法
cout << "a * b = " << (a * b) << endl; // 乘法
cout << "a / b = " << (a / b) << endl; // 整数除法(截断小数)
cout << "x / y = " << (x / y) << endl; // 浮点数除法
cout << "a % b = " << (a % b) << endl; // 取模(求余数)
cout << endl << "=== 自增自减运算符 ===" << endl;
// 自增自减运算
int c = 5;
cout << "初始值 c = " << c << endl;
cout << "c++ = " << c++ << endl; // 后置自增:先使用值,再自增
cout << "现在 c = " << c << endl;
cout << "++c = " << ++c << endl; // 前置自增:先自增,再使用值
cout << "现在 c = " << c << endl;
cout << "c-- = " << c-- << endl; // 后置自减:先使用值,再自减
cout << "现在 c = " << c << endl;
cout << "--c = " << --c << endl; // 前置自减:先自减,再使用值
cout << "现在 c = " << c << endl;
return 0;
}
=== 算术运算符示例 ===
a = 10, b = 3
a + b = 13
a - b = 7
a * b = 30
a / b = 3
x / y = 3.33333
a % b = 1
=== 自增自减运算符 ===
初始值 c = 5
c++ = 5
现在 c = 6
++c = 7
现在 c = 7
c-- = 7
现在 c = 6
--c = 5
现在 c = 5
用于比较两个值,返回布尔值(true/false)。
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于 | a == b |
| != | 不等于 | a != b |
| > | 大于 | a > b |
| < | 小于 | a < b |
| >= | 大于等于 | a >= b |
| <= | 小于等于 | a <= b |
#include <iostream>
using namespace std;
int main() {
cout << "=== 关系运算符示例 ===" << endl;
int a = 10, b = 20, c = 10;
cout << "a = " << a << ", b = " << b << ", c = " << c << endl << endl;
// 等于和不等于
cout << "a == b: " << (a == b) << endl; // 等于比较
cout << "a == c: " << (a == c) << endl; // 等于比较
cout << "a != b: " << (a != b) << endl; // 不等于比较
cout << "a != c: " << (a != c) << endl; // 不等于比较
cout << endl;
// 大小比较
cout << "a > b: " << (a > b) << endl; // 大于比较
cout << "a < b: " << (a < b) << endl; // 小于比较
cout << "a >= c: " << (a >= c) << endl; // 大于等于比较
cout << "a <= c: " << (a <= c) << endl; // 小于等于比较
cout << "b >= a: " << (b >= a) << endl; // 大于等于比较
cout << endl << "=== 在条件语句中使用 ===" << endl;
// 在 if 语句中使用关系运算符
if (a < b) {
cout << "a 小于 b" << endl;
}
if (a == c) {
cout << "a 等于 c" << endl;
}
if (b > a) {
cout << "b 大于 a" << endl;
}
return 0;
}
=== 关系运算符示例 ===
a = 10, b = 20, c = 10
a == b: 0
a == c: 1
a != b: 1
a != c: 0
a > b: 0
a < b: 1
a >= c: 1
a <= c: 1
b >= a: 1
=== 在条件语句中使用 ===
a 小于 b
a 等于 c
b 大于 a
用于组合多个条件,返回布尔值。
| 运算符 | 描述 | 示例 |
|---|---|---|
| && | 逻辑与 | a && b |
| ! | 逻辑非 | !a |
#include <iostream>
using namespace std;
int main() {
cout << "=== 逻辑运算符示例 ===" << endl;
bool trueVal = true, falseVal = false;
int age = 25;
double salary = 50000.0;
bool hasLicense = true;
cout << "trueVal = " << trueVal << ", falseVal = " << falseVal << endl;
cout << "age = " << age << ", salary = " << salary << ", hasLicense = " << hasLicense << endl << endl;
// 逻辑与 (&&) - 两个条件都为真时返回真
cout << "trueVal && falseVal: " << (trueVal && falseVal) << endl;
cout << "trueVal && trueVal: " << (trueVal && trueVal) << endl;
cout << "(age >= 18) && (hasLicense): " << ((age >= 18) && hasLicense) << endl;
cout << endl;
// 逻辑或 (||) - 至少一个条件为真时返回真
cout << "trueVal || falseVal: " << (trueVal || falseVal) << endl;
cout << "falseVal || falseVal: " << (falseVal || falseVal) << endl;
cout << "(age < 18) || (salary > 40000): " << ((age < 18) || (salary > 40000)) << endl;
cout << endl;
// 逻辑非 (!) - 取反
cout << "!trueVal: " << (!trueVal) << endl;
cout << "!falseVal: " << (!falseVal) << endl;
cout << "!(age >= 18): " << (!(age >= 18)) << endl;
cout << endl << "=== 复杂逻辑表达式 ===" << endl;
// 复杂逻辑表达式
bool isEligible = (age >= 18) && (salary > 30000) && hasLicense;
cout << "贷款资格:" << isEligible << endl;
bool canVote = (age >= 18) || (age < 18 && hasLicense); // 注意:这个逻辑不太合理,仅为演示
cout << "投票资格:" << canVote << endl;
return 0;
}
=== 逻辑运算符示例 ===
trueVal = 1, falseVal = 0
age = 25, salary = 50000, hasLicense = 1
trueVal && falseVal: 0
trueVal && trueVal: 1
(age >= 18) && (hasLicense): 1
trueVal || falseVal: 1
falseVal || falseVal: 0
(age < 18) || (salary > 40000): 1
!trueVal: 0
!falseVal: 1
!(age >= 18): 0
=== 复杂逻辑表达式 ===
贷款资格:1
投票资格:1
用于给变量赋值。
| 运算符 | 描述 | 示例 | 等价于 |
|---|---|---|---|
| = | 简单赋值 | a = b | a = b |
| += | 加后赋值 | a += b | a = a + b |
| -= | 减后赋值 | a -= b | a = a - b |
| *= | 乘后赋值 | a *= b | a = a * b |
| /= | 除后赋值 | a /= b | a = a / b |
| %= | 取模后赋值 | a %= b | a = a % b |
#include <iostream>
using namespace std;
int main() {
cout << "=== 赋值运算符示例 ===" << endl;
int a = 10;
cout << "初始值 a = " << a << endl;
// 简单赋值
a = 5;
cout << "a = 5 后:" << a << endl;
// 复合赋值运算符
a += 3; // a = a + 3
cout << "a += 3 后:" << a << endl;
a -= 2; // a = a - 2
cout << "a -= 2 后:" << a << endl;
a *= 4; // a = a * 4
cout << "a *= 4 后:" << a << endl;
a /= 2; // a = a / 2
cout << "a /= 2 后:" << a << endl;
a %= 3; // a = a % 3
cout << "a %= 3 后:" << a << endl;
cout << endl << "=== 多个变量赋值 ===" << endl;
// 多个变量赋值
int x, y, z;
x = y = z = 100; // 从右向左赋值
cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
// 在表达式中使用赋值
int b = 5;
int c = (b = 10) + 5; // b 被赋值为 10,然后 c = 10 + 5
cout << "b = " << b << ", c = " << c << endl;
return 0;
}
=== 赋值运算符示例 ===
初始值 a = 10
a = 5 后:5
a += 3 后:8
a -= 2 后:6
a *= 4 后:24
a /= 2 后:12
a %= 3 后:0
=== 多个变量赋值 ===
x = 100, y = 100, z = 100
b = 10, c = 15
对整数在二进制位级别进行操作。
| 运算符 | 描述 | 示例 |
|---|---|---|
| & | 按位与 | a & b |
| | | 按位或 | a | b |
| ^ | 按位异或 | a ^ b |
| ~ | 按位取反 | ~a |
| << | 左移 | a << n |
| >> | 右移 | a >> n |
#include <iostream>
#include <bitset>
using namespace std;
int main() {
cout << "=== 位运算符示例 ===" << endl;
unsigned int a = 5; // 二进制:0101
unsigned int b = 3; // 二进制:0011
unsigned int c;
cout << "a = " << a << " (二进制:" << bitset<4>(a) << ")" << endl;
cout << "b = " << b << " (二进制:" << bitset<4>(b) << ")" << endl << endl;
// 按位与 (&) - 两个位都为 1 时结果为 1
c = a & b;
cout << "a & b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位或 (\|) - 至少一个位为 1 时结果为 1
c = a | b;
cout << "a | b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位异或 (^) - 两个位不同时结果为 1
c = a ^ b;
cout << "a ^ b = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 按位取反 (~) - 所有位取反
c = ~a;
cout << "~a = " << c << " (二进制:" << bitset<32>(c) << ")" << endl;
cout << endl << "=== 移位运算符 ===" << endl;
// 左移 (<<) - 向左移动指定位数,右边补 0
c = a << 1; // 0101 << 1 = 1010
cout << "a << 1 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
c = a << 2; // 0101 << 2 = 0100 (假设 4 位表示)
cout << "a << 2 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
// 右移 (>>) - 向右移动指定位数,左边补 0
c = a >> 1; // 0101 >> 1 = 0010
cout << "a >> 1 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
c = a >> 2; // 0101 >> 2 = 0001
cout << "a >> 2 = " << c << " (二进制:" << bitset<4>(c) << ")" << endl;
return 0;
}
=== 位运算符示例 ===
a = 5 (二进制:0101)
b = 3 (二进制:0011)
a & b = 1 (二进制:0001)
a | b = 7 (二进制:0111)
a ^ b = 6 (二进制:0110)
~a = 4294967290 (二进制:11111111111111111111111111111010)
=== 移位运算符 ===
a << 1 = 10 (二进制:1010)
a << 2 = 20 (二进制:0100)
a >> 1 = 2 (二进制:0010)
a >> 2 = 1 (二进制:0001)
语法:条件 ? 表达式 1 : 表达式 2
返回类型或对象的大小(字节数)。
按顺序执行多个表达式,返回最后一个表达式的值。
#include <iostream>
using namespace std;
int main() {
cout << "=== 条件运算符(三元运算符)===" << endl;
int a = 10, b = 20;
// 条件运算符:如果条件为真返回第一个值,否则返回第二个值
int max = (a > b) ? a : b;
cout << "a = " << a << ", b = " << b << endl;
cout << "较大值是:" << max << endl;
// 在输出中使用条件运算符
cout << "a " << ((a % 2 == 0) ? "是偶数" : "是奇数") << endl;
cout << "b " << ((b % 2 == 0) ? "是偶数" : "是奇数") << endl;
cout << endl << "=== sizeof 运算符 ===" << endl;
// sizeof 运算符
cout << "sizeof(int): " << sizeof(int) << " 字节" << endl;
cout << "sizeof(double): " << sizeof(double) << " 字节" << endl;
cout << "sizeof(char): " << sizeof(char) << " 字节" << endl;
cout << "sizeof(a): " << sizeof(a) << " 字节" << endl;
cout << endl << "=== 逗号运算符 ===" << endl;
// 逗号运算符
int x, y, z;
z = (x = 5, y = 10, x + y); // 依次执行 x=5, y=10, 然后返回 x+y
cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
// 在 for 循环中使用逗号运算符
for (int i = 0, j = 10; i < j; i++, j--) {
cout << "i = " << i << ", j = " << j << endl;
}
return 0;
}
=== 条件运算符(三元运算符)===
a = 10, b = 20
较大值是:20
a 是偶数
b 是偶数
=== sizeof 运算符 ===
sizeof(int): 4 字节
sizeof(double): 8 字节
sizeof(char): 1 字节
sizeof(a): 4 字节
=== 逗号运算符 ===
x = 5, y = 10, z = 15
i = 0, j = 10
i = 1, j = 9
i = 2, j = 8
i = 3, j = 7
i = 4, j = 6
#include <iostream>
using namespace std;
int main() {
cout << "=== 运算符优先级示例 ===" << endl;
int a = 5, b = 3, c = 2;
int result;
// 乘法优先级高于加法
result = a + b * c;
cout << "a + b * c = " << result << endl; // 5 + (3 * 2) = 11
// 使用括号改变优先级
result = (a + b) * c;
cout << "(a + b) * c = " << result << endl; // (5 + 3) * 2 = 16
// 关系运算符优先级高于逻辑运算符
bool logicalResult = a > b && b < c;
cout << "a > b && b < c = " << logicalResult << endl; // (5 > 3) && (3 < 2) = true && false = false
// 自增运算符优先级
int x = 5;
int y = ++x * 2; // 先自增,再乘法
cout << "y = ++x * 2: x = " << x << ", y = " << y << endl;
x = 5;
y = x++ * 2; // 先乘法,再自增
cout << "y = x++ * 2: x = " << x << ", y = " << y << endl;
return 0;
}
=== 运算符优先级示例 ===
a + b * c = 11
(a + b) * c = 16
a > b && b < c = 0
y = ++x * 2: x = 6, y = 12
y = x++ * 2: x = 6, y = 10
| 运算符类型 | 主要运算符 | 使用场景 |
|---|---|---|
| 算术运算符 | +, -, *, /, %, ++, -- | 数学计算 |
| 关系运算符 | ==, !=, >, <, >=, <= | 比较操作 |
| 逻辑运算符 | &&, | |
| 赋值运算符 | =, +=, -=, *=, /=, %= | 变量赋值 |
| 位运算符 | &, | , ^, ~, <<, >> |
| 其他运算符 | ?:, sizeof, , | 条件判断、大小计算、多表达式 |
重要提示:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online