跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

C++ 运算符详解

C++ 中的各类运算符,包括算术、关系、逻辑、赋值、位运算及其他运算符。通过功能说明、表格对比和代码示例,讲解了运算符的用法、优先级及注意事项,如自增自减的区别和整数除法特性。旨在帮助读者掌握 C++ 基础语法操作。

性能调优发布于 2026/3/22更新于 2026/10/25101 浏览
C++ 运算符详解

C++ 运算符详解

运算符是一种告诉编译器执行特定数学或逻辑操作的符号。C++ 提供了丰富的运算符,主要包括:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符(如条件运算符、逗号运算符等)

1. 算术运算符

功能

用于执行基本的数学运算。

运算符描述示例
+加法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

2. 关系运算符

功能

用于比较两个值,返回布尔值(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

3. 逻辑运算符

功能

用于组合多个条件,返回布尔值。

运算符描述示例
&&逻辑与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

4. 赋值运算符

功能

用于给变量赋值。

运算符描述示例等价于
=简单赋值a = ba = b
+=加后赋值a += ba = a + b
-=减后赋值a -= ba = a - b
*=乘后赋值a *= ba = a * b
/=除后赋值a /= ba = a / b
%=取模后赋值a %= ba = 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

5. 位运算符

功能

对整数在二进制位级别进行操作。

运算符描述示例
&按位与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)

6. 其他运算符

条件运算符(三元运算符)

语法:条件 ? 表达式 1 : 表达式 2

sizeof 运算符

返回类型或对象的大小(字节数)。

逗号运算符

按顺序执行多个表达式,返回最后一个表达式的值。

代码示例

#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

7. 运算符优先级示例

#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, ,条件判断、大小计算、多表达式

重要提示:

  1. 注意运算符的优先级,不确定时使用括号
  2. 自增自减运算符的前置和后置有重要区别
  3. 整数除法和浮点数除法结果不同
  4. 逻辑运算符有短路求值特性

目录

  1. C++ 运算符详解
  2. 1. 算术运算符
  3. 功能
  4. 代码示例
  5. 运行结果
  6. 2. 关系运算符
  7. 功能
  8. 代码示例
  9. 运行结果
  10. 3. 逻辑运算符
  11. 功能
  12. 代码示例
  13. 运行结果
  14. 4. 赋值运算符
  15. 功能
  16. 代码示例
  17. 运行结果
  18. 5. 位运算符
  19. 功能
  20. 代码示例
  21. 运行结果
  22. 6. 其他运算符
  23. 条件运算符(三元运算符)
  24. sizeof 运算符
  25. 逗号运算符
  26. 代码示例
  27. 运行结果
  28. 7. 运算符优先级示例
  29. 运行结果
  30. 总结

更多推荐文章

查看全部
  • 七款主流大模型英文降重能力横向测评
  • 大模型核心技术详解:架构、训练与微调
  • 2025 年 12 月 GESP CCF 编程能力等级认证 C++ 六级真题
  • 深入理解 Java 虚拟机内存模型
  • VSCode 本地运行 DeepSeek 模型教程
  • OpenClaw 开源 AI Agent 框架解析
  • 基于 Qt 与 C++ 的经典游戏小球打砖块完整项目实战
  • AI 大模型在金融、医疗、法律等垂直领域的创新应用与突破
  • LogicGame:清华智谱发布大模型规则推理新基准
  • 昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践
  • OpenClaw 跨平台 AI 助手完全使用指南:从入门到精通
  • Spring AOP 核心概念与实战解析
  • Web 服务架构与 I/O 模型详解
  • 基于 OpenCV 的 Python 自动扫雷实现
  • 网络安全行业自学与转行建议
  • 位运算实战:位图与异或消消乐高频算法题解析
  • 基于 Chainlit 的 Phi-3 模型插件开发:思维链可视化与 Token 统计
  • 环形链表、两个数组中的交集与随机链表复制算法解析
  • Android 程序员转行车载开发技术指南
  • Spring Cloud Gateway 核心原理与实战指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online