
一起动脑筋 · 先看一个小故事
机器人要记录答题选项 A,以及答案是否正确。一个保存符号,一个保存真假。
把过程摊开来看
- 选项char 保存 A
- 比较选项是否为 A
- 结果bool 保存 true
char 可以保存字符编码的一个基本存储单位,bool 表示真或假。
在入门例子中,'A' 是字符,true 表示条件成立。它们不是同一种数据。
01char 是什么?
char 是 C++ 的字符类型之一。
char grade = 'A';
单引号里的 'A' 是字符字面量。
从底层看,char 保存的是一个整数编码值,程序按照字符编码规则把它解释成字符。
02字符为什么能变成数字?
例如在 ASCII 兼容编码中,大写字母 A 的编码值是 65。
char c = 'A';
std::cout << static_cast<int>(c);
常见环境下会输出 65。
03一个 char 能保存一个中文汉字吗?
通常不能把“一个 char = 一个汉字”这样理解。
char 至少能表示一个 Byte 的最小可寻址字符单位,而 UTF-8 中一个常见汉字通常需要多个 Byte。
04bool 是什么?
bool 用来保存逻辑真假:
bool passed = true;
bool gameOver = false;
true
表示逻辑上的“真”。
false
表示逻辑上的“假”。
05bool 在内存里只占 1 bit 吗?
不一定。虽然逻辑上只需要两个状态,但 C++ 对普通对象的存储还要满足寻址和实现要求。
常见实现中 sizeof(bool) 往往是 1 Byte,而不是 1 bit。
06char 和 bool 都属于什么?
它们都属于 C++ 的基础类型。
char
适合保存小整数编码和字符代码单元。
bool
适合表示真假状态。
你已经知道了什么
char是字符类型,本质上保存一个小整数值。- 字符编码决定数值怎样对应字符。
- 一个
char不能简单等同于“一个中文汉字”。 bool只有true和false两种逻辑值。bool的逻辑状态只有两种,但实际存储不一定只有 1 bit。
下一篇:给变量赋值是什么意思?
轮到你来试一试
“有没有带伞”适合 bool 还是用整数记录雨伞重量?
想好了吗?点开看解释
只关心有没有时,用 bool 更直接;若要记录重量,还需要另外的数据。先想清楚问题,再选择类型。