🔷 第三章 运算符与表达式
📄 一句话概括

第二章把"数据"备齐了,这一章开始加工数据。运算符就是数据的"加工动作"——加、减、比大小、改值、钻到二进制里拧螺丝。本节是全章的总览地图:9 类运算符先认个脸,后面 3.1.1~3.1.9 一类一类细讲。

一、运算符是什么

运算符(operator)= 告诉编译器"要对数据做什么动作"的符号。

拿生活里的东西打比方:

生活里的 程序里的
食材 操作数(变量、常量、表达式)
刀、锅、秤、搅拌器 运算符
一道菜 表达式的结果

a + b 里,a、b 是操作数(被加工的食材),+ 是运算符(加工动作),整体 a + b 是一个表达式(做完的这道菜,有值有类型——这个概念 3.3 节展开)。

关键认知:每个运算符都有"参加条件"和"产出结果"。

搞错这两个,报错和 bug 都是从这儿来的。

二、本章 9 类运算符地图

分组 运算符 干什么 细讲
算(出数值) 算术 + - * / % 3.1.1
移位 << >>(二进制整体搬家) 3.1.6
比(出真假) 关系 > < >= <= == != 3.1.2
逻辑 &&(且)\|\|(或)!(非) 3.1.3
管(改内存) 赋值 = 及 += -= 等复合 3.1.4
位 & \| ^ ~(按二进制位操作) 3.1.5
问(问信息) sizeof 问"占几个字节" 3.1.7
选(挑路走) 条件 条件 ? 甲 : 乙 3.1.8
排(串着算) 逗号 从左到右算完,取最后一个 3.1.9

四句口诀记分组:算出数值、比出真假、管住内存、问出信息。

为什么现在学它们? 后面第 4 章的 if 判断、第 5 章的 for 循环,条件全是靠"关系 + 逻辑"运算符搭出来的;循环计数靠"赋值 + 算术"。这一章是流程控制的地基——地基没打好,第 4 章起每一步都晃。

三、30 秒实验:先摸一遍手感

不用全懂,先把地图跑一遍。在 Dev-C++ 里新建工程,敲:

#include <iostream>
using namespace std;

int main() {
    cout << 7 / 2 << endl;        // 算术:输出 3(整数除法,回看 2.4.1)
    cout << (7 > 3) << endl;      // 关系:输出 1(真)
    cout << ((7 > 3) && (2 > 5)) << endl;  // 逻辑:输出 0(一真一假,且为假)
    int a = 10;
    a += 5;                        // 赋值:a 变成 15
    cout << a << endl;
    cout << sizeof(int) << endl;  // 问:输出 4(int 占 4 字节)
    return 0;
}

看到什么算成功:依次输出 3、1、0、15、4。看不懂哪一行,就等着对应小节细讲——这正是地图的用法。

四、常见误区

  1. "运算符就那几个,小学都会"——%(取余)、==(比较)、&(位与)都长着一张"熟脸",干的却是新活。最熟的符号反而最容易出错的活。
  2. "先记住再学"——不用背,本章结束这张表你会自然记住。现在只需知道:遇到一个符号,先问它"参加条件是什么、结果是啥类型"。
  3. "7 > 3 输出的是'对'"——程序里没有"对"这个字,输出的是 1(bool 真)。真假就是数字。
自测三问(点开对答案) 1. `a + b` 里哪个是运算符、哪些是操作数?——`+` 是运算符;`a`、`b` 是操作数。 2. `sizeof` 属于哪个分组?——**"问"**:问信息(问占几个字节),不改变任何数据。 3. 为什么说这一章是第 4 章 `if` 判断的地基?——`if` 的条件就是**关系运算符 + 逻辑运算符**搭出来的表达式,条件算出 `true` 就执行。

相关笔记