🔷 第二章 C++语言基础
📄 一句话概括

常量=程序运行过程中不会变的值,就是你在代码里直接写出来的那些东西:123、3.14、'A'、"abc"。按长相分五类:整型、实型、字符、字符串、其他(符号常量/布尔)。符号则是 + - * / << ; { } 这类"标点"——负责表达运算与结构。一句话:常量是"货",符号是"语法零件"。

一、先分清:常量 vs 变量

常量 变量
值会不会变 不变 随便改
长相 直接写出来的字面值,如 3.14 有名字的小盒子,如 double pi;
比喻 刻在石头上 写在白板上
什么时候讲 本节(2.2) 下一节(2.3)

注意:"abc" 这种直接写在代码里的常量,专业叫法叫字面常量(literal)。而 const double PI = 3.14; 里那个 PI,虽然也是"不变的值",但它是起了名字的常量,叫符号常量——放到 2.2.5 讲。

二、五类常量速查

类型 长相 例子 说明 详细在
整型常量 一串数字 123 -5 0x1F 017 没有小数点的整数;支持十进制/八进制/十六进制 2.2.1
实型常量 带小数点或指数 3.14 0.5 1.5e3 也叫浮点数;e 表示乘 10 的几次方 2.2.2
字符常量 单引号包一个字符 'A' '7' '\n' 本质是一个整数(ASCII 码) 2.2.3
字符串常量 双引号包一串字符 "abc" "你好" 末尾自动加一个结束标志 '\0' 2.2.4
其他常量 关键字写法 const 定义的、true/false 符号常量、布尔常量等 2.2.5

一眼区分字符与字符串:

'A'     // 字符常量:单引号,只有一个字符,本质是整数 65
"A"     // 字符串常量:双引号,是"A + 结束符"两个字节

三、为什么非要分这么多类

同一个"值",类型不同会带来三个差异——这就是后面所有"报错/结果不对"的根源:

  1. 占多少内存不一样:123 可能占 4 字节,'A' 只占 1 字节,"abc" 占 4 字节
  2. 能做什么运算不一样:整数能取余数(%)、能做整除;实数不行(5 % 2 可以,5.0 % 2.0 不行)
  3. 算出来的结果不一样:5 / 2 得 2(整数除法,小数被丢掉),5.0 / 2 得 2.5

所以:写代码时"随手写个数字",其实是在替编译器决定"用哪种算盘"。

四、符号是什么

符号(标点符号) 是代码里的语法零件,按作用大致分四拨:

类别 符号 作用
运算 + - * / % 算术运算
比较 > < >= <= == != 比大小/判断相等(第 4 章)
逻辑 && \|\| ! 与、或、非(第 4 章)
结构 ; { } ( ) , << >> = 分隔语句、划定范围、输入输出

跟常量一句话对照:cout << "Hello" << 3.14; 里,"Hello" 和 3.14 是常量,<< 和 ; 是符号。

五、动手 Demo:写一个小程序,把五类常量各摆一遍

#include <iostream>
using namespace std;

int main() {
    cout << 123 << endl;        // 整型常量
    cout << 3.14 << endl;       // 实型常量
    cout << 'A' << endl;        // 字符常量 —— 输出的是字母 A
    cout << "ABC" << endl;      // 字符串常量
    cout << "一个汉字" << endl;  // 中文字符串
    return 0;
}

看到什么算成功:依次输出 123、3.14、A、ABC、一个汉字。

关键观察:cout << 'A' 输出的是 A 本身,不是 65——虽然 'A' 在内存里就是 65。cout 会按"你写的是字符还是数字"来决定怎么打印,这一点在 2.2.3 会更清楚。

30 秒实验:把 cout << 'A' << endl; 改成 cout << 'A' + 1 << endl;,看看输出是 B 还是 66——这一个实验就把"字符本质是整数"讲透了(答案在 2.2.3)。

六、常见误区

  1. "3 和 3.0 是一回事"——不是。前者是整型,后者是实型;5 / 2 得 2,5.0 / 2 得 2.5。写小数时别偷懒省掉 .0
  2. "单引号和双引号随便用"——绝不能混。'A' 是字符(1 字节),"A" 是字符串(2 字节)。用错了编译器直接报错
  3. "中文标点看着一样就行"——不行。必须英文半角:' 和 '、" 和 "、; 和 ; 在编译器眼里完全不同
  4. "常量就是不能变的东西,没什么可学的"——恰恰相反,这一节决定了后面所有算术运算的结果对不对(整数除法、精度丢失、溢出,全从这里长出来)
自测四问(点开对答案) 1. 常量分哪五类?——整型、实型、字符、字符串、其他(符号常量/布尔)。 2. 字符常量和字符串常量怎么区分?——看引号:**单引号**是字符(`'A'`),**双引号**是字符串(`"A"`)。 3. `'A'` 在内存里是什么?——一个整数 **65**(ASCII 码);`cout << 'A'` 输出字母 A,`cout << 'A' + 1` 会得到字符 B(或参与运算时按 66 算)。 4. 为什么写小数不能省掉 `.0`?——`5 / 2` 是整数除法得 2;写成 `5.0 / 2` 才是实数除法得 2.5。

相关笔记