📄 一句话概括
常量=程序运行过程中不会变的值,就是你在代码里直接写出来的那些东西: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 + 结束符"两个字节
三、为什么非要分这么多类
同一个"值",类型不同会带来三个差异——这就是后面所有"报错/结果不对"的根源:
- 占多少内存不一样:
123可能占 4 字节,'A'只占 1 字节,"abc"占 4 字节 - 能做什么运算不一样:整数能取余数(
%)、能做整除;实数不行(5 % 2可以,5.0 % 2.0不行) - 算出来的结果不一样:
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)。
六、常见误区
- "
3和3.0是一回事"——不是。前者是整型,后者是实型;5 / 2得 2,5.0 / 2得 2.5。写小数时别偷懒省掉.0 - "单引号和双引号随便用"——绝不能混。
'A'是字符(1 字节),"A"是字符串(2 字节)。用错了编译器直接报错 - "中文标点看着一样就行"——不行。必须英文半角:
'和'、"和"、;和;在编译器眼里完全不同 - "常量就是不能变的东西,没什么可学的"——恰恰相反,这一节决定了后面所有算术运算的结果对不对(整数除法、精度丢失、溢出,全从这里长出来)
自测四问(点开对答案)
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。- ☑ 整型常量