C++字符类型 char 和布尔类型 bool
简单47小卡片上的字母和判断:C++ 中的 char 与 bool
除了数字,程序里还会用到字母、符号以及“是/否”这样的逻辑判断。C++ 提供了两个专门的小类型:char 和 bool。char 像一张小卡片,上面只能写一个字符;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
新手容易犯的错误
-
用双引号代替单引号
char必须用单引号'',如果用双引号,会被当成字符串(比如"A"其实是两个字符'A'和'\0'),编译器会报错或警告。char bad = "A"; // 错误!应该用 'A' -
混淆字符
'0'和数字0
char digit = '0';存放的是字符'0',它的 ASCII 码是 48,不是数字 0。如果用它做算术,记得转换。char ch = '5'; // 字符'5' int num = ch - '0'; // 正确:得到数字5(减去'0'的48即可) cout << "数字是:" << num << endl; // 输出5 -
bool 变量输出的是 1 或 0,不是文字“true”“false”
在 C++ 中,true输出1,false输出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
向哪里继续学习?
学会了 char 和 bool,你就能处理字符和真假判断了。接下来可以学习:
- 更多字符知识:ASCII 码表、转义字符(如
'\n'换行、'\t'制表符) - 字符串:多个字符组成的串(用
string类型) - 逻辑运算:
&&(与)、||(或)、!(非),让bool判断更强大 - 条件语句:
if、else、switch,让程序根据bool值做不同事情
char 和 bool 虽然小,却是编程大厦的砖瓦,用好它们,你的程序就能“看懂”字符、做出判断啦!
例题精讲
在C++中,char类型变量在内存中通常占用多少个字节?
下列哪个选项可以作为char类型变量的合法值?
C++中,bool类型变量只能被赋值为true或false,不能赋值整数。
在C++中,字符变量char ch = '0'; 与 char ch = 48; 是等价的。
以下代码尝试输出布尔值,请填空使得程序输出"true"(不含引号)。\n#include <iostream>\nusing namespace std;\nint main() {\n bool flag = ___;\n cout << boolalpha << flag;\n return 0;\n}