CC++ & Algorithm

C++字符类型 char 和布尔类型 bool

简单47
语言版本:C++Python
概述:char存放单个字符(如字母、数字、符号),bool存放真假(true/false),就像小卡片上写一个字或者一个对勾/叉叉。

小卡片上的字母和判断:C++ 中的 char 与 bool

除了数字,程序里还会用到字母、符号以及“是/否”这样的逻辑判断。C++ 提供了两个专门的小类型:charboolchar 像一张小卡片,上面只能写一个字符;bool 像一枚硬币,只有正面(对)和反面(错)。

char —— 字符的“小卡片”

char 用来存放一个单独的字符,比如 'A''a''3''#'。注意字符要用单引号 '' 括起来。每个 char 变量只能放一个字符。

char grade = 'A';         // 存放一个大写字母A
char digit = '7';         // 存放字符'7'(注意,这不是数字7)
char symbol = '$';        // 存放美元符号

电脑内部其实是用数字来表示字符的,比如 'A' 对应数字 65,'a' 对应 97。这个编码叫 ASCII 码。所以你也可以把 char 当成一个小整数来用:

char ch = 65;
cout << ch << endl;   // 输出 A(因为65对应A)

因为 char 本质上是整数,你还可以对它做一点算术——比如把字母变成下一个字母:

char letter = 'A';            // 变量letter,存放'A'
letter = letter + 1;          // 加1后变成 'B'(ASCII 66)
cout << letter << endl;       // 输出 B

再举个生活中的例子:假如你每周的零花钱评级是 'A''B''C',用 char 就能轻松记住:

char pocketMoneyGrade = 'A';   // 零花钱等级是 A
cout << "我的零花钱等级是:" << pocketMoneyGrade << endl;

bool —— 判断“对与错”

bool 只有两个可能的值:true(真,对)和 false(假,错)。它就像考试卷上的判断题,要么打勾,要么打叉。

bool isStudent = true;       // 我是一个学生(真)
bool hasPet = false;         // 我没有宠物(假)

bool 类型经常用在条件判断里,比如:

bool sunny = true;
if (sunny) {
    cout << "出去玩吧!" << endl;
}

你也可以用 bool 来记录数学考试是否及格:

int score = 85;                  // 考试成绩85分
bool pass = (score >= 60);       // 如果分数≥60则pass为true,否则false
cout << "是否及格?" << pass << endl;   // 输出1(因为true在C++中显示为1)

除了直接赋值,bool 还能从比较运算中得到结果,像下面这样:

int age = 12;                       // 年龄12岁
bool canWatchMovie = (age >= 12);   // 能不能看12+电影?true表示可以
cout << "可以看电影吗?" << canWatchMovie << endl;  // 输出1

新手容易犯的错误

  1. 用双引号代替单引号
    char 必须用单引号 '',如果用双引号,会被当成字符串(比如 "A" 其实是两个字符 'A''\0'),编译器会报错或警告。

    char bad = "A";    // 错误!应该用 'A'
    
  2. 混淆字符 '0' 和数字 0
    char digit = '0'; 存放的是字符 '0',它的 ASCII 码是 48,不是数字 0。如果用它做算术,记得转换。

    char ch = '5';                          // 字符'5'
    int num = ch - '0';                     // 正确:得到数字5(减去'0'的48即可)
    cout << "数字是:" << num << endl;       // 输出5
    
  3. bool 变量输出的是 1 或 0,不是文字“true”“false”
    在 C++ 中,true 输出 1false 输出 0。如果需要显示单词,得自己用 if 判断。

    bool happy = true;
    cout << happy << endl;       // 输出1,不是“true”
    // 要显示“true”可以这样写:
    if (happy) cout << "true" << endl;
    

完整示例:用 char 和 bool 记录学生信息

下面这个程序读取你的名字首字母和成绩,判断是否及格,并显示出等级和结果。

#include <iostream>
using namespace std;

int main() {
    // ---- 用 char 记录等级 ----
    char level = 'B';               // 成绩等级:A、B、C、D
    cout << "你的成绩等级是:" << level << endl;

    // ---- 用 bool 记录是否及格 ----
    int score = 78;                 // 考试成绩78分
    bool passed = (score >= 60);    // 判断是否及格,结果存到bool变量

    cout << "分数:" << score << endl;
    cout << "是否及格?" << passed << endl;   // 输出1(真)

    // ---- 用字符运算得下一个字母 ----
    char nextLevel = level + 1;     // 'B'加1变成'C'
    cout << "下一等级是:" << nextLevel << endl;

    return 0;
}

运行结果:

你的成绩等级是:B
分数:78
是否及格?1
下一等级是:C

向哪里继续学习?

学会了 charbool,你就能处理字符和真假判断了。接下来可以学习:

  • 更多字符知识:ASCII 码表、转义字符(如 '\n' 换行、'\t' 制表符)
  • 字符串:多个字符组成的串(用 string 类型)
  • 逻辑运算&&(与)、||(或)、!(非),让 bool 判断更强大
  • 条件语句ifelseswitch,让程序根据 bool 值做不同事情

charbool 虽然小,却是编程大厦的砖瓦,用好它们,你的程序就能“看懂”字符、做出判断啦!

例题精讲

1单选题

在C++中,char类型变量在内存中通常占用多少个字节?

A1字节
B2字节
C4字节
D8字节
2单选题

下列哪个选项可以作为char类型变量的合法值?

A"A"
B'A'
CA
D65
3判断题

C++中,bool类型变量只能被赋值为true或false,不能赋值整数。

4判断题

在C++中,字符变量char ch = '0'; 与 char ch = 48; 是等价的。

5填空题
以下代码尝试输出布尔值,请填空使得程序输出"true"(不含引号)。\n#include <iostream>\nusing namespace std;\nint main() {\n    bool flag = ___;\n    cout << boolalpha << flag;\n    return 0;\n}