女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

机器人要记录答题选项 A,以及答案是否正确。一个保存符号,一个保存真假。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 选项char 保存 A
  2. 比较选项是否为 A
  3. 结果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 只有 truefalse 两种逻辑值。
  • bool 的逻辑状态只有两种,但实际存储不一定只有 1 bit。

下一篇:给变量赋值是什么意思?

轮到你来试一试

“有没有带伞”适合 bool 还是用整数记录雨伞重量?

想好了吗?点开看解释

只关心有没有时,用 bool 更直接;若要记录重量,还需要另外的数据。先想清楚问题,再选择类型。