主要内容 #
1. char 的数值 #
从之前课程的学习中,我们总结一下对 char 的一些认识;
有符号:char
无符号:unsigned char
- char 和 unsigned char 的大小都是 1 字节(Byte)
- unsigned char 本身为一个整型,表示范围为 0 ~ 255
一般,我们更加习惯写作:0x00 ~ 0xFF
- char 本身为一个整型,表示范围为 -128~127
我们一般也写作:0x00 ~ 0xFF
小思考:
为什么 char 的表示范围是 -127~126,unsigned char 的表示范围是 0~255,
而我们在写十六进制的表示范围时,都写作了 0x00~0xFF ?
答案:
十六进制,反映的是内存中实际的“有电/没电”状态;
十进制,反映的是我们可以直观理解的数值范围。
下面,我们来使用一下 char,请看代码
#include <iostream> using namespace std; int main() { // 定义、初始化、赋值 char da; da = 5; char shi(6); char ma = 8; return 0; }
这些是常规用法,现在来看一下
#include < iostream > using namespace std; int main() { // 定义、初始化、赋值 char da; da = 'A'; char shi('b'); char ma = 'C'; return 0; }
C++ 中,char 除了可以表示一个数值以外,还被用来表示“字符”。
名词解释:“字符”
字符,其实就是一个英文字母、数字、特殊符号。
这里有两个关键词:
- 一个
- 英文字母、数字、特殊符号
汇总如下:
2. ASCII #
一般,我们需要重点关注的是“ASCII 打印字符”。
请注意:为了区别,C++ 使用单引号(’)来表示字符常量(换了个说法,其实也就是字符)。
请看代码:
#include < iostream > using namespace std; int main() { char da; // 赋值为字符 'A' da = 'A'; char shi; shi = 65; // 赋值为数字 65 cout << "da = " << da << endl; // 输出字符变量 cout << "shi = " << shi << endl; // 输出字符变量 return 0; }
是不是发现,输出为
da = A shi = A
对于字符变量的赋值,请注意:
- 字符变量,使用字符赋值,字符会转化成对应的数值,存储到变量中。
- 字符变量,使用数值赋值,数值将直接,存储到变量中。
- 字符变量,使用数值赋值,数值范围不可超过 [0, 127]。
对于字符变量的输出,请注意:
- 字符变量,输出时,存储的数值,将转化成 ASCII 中对应的字符,然后输出到屏幕。
这就体现了 C++ 中, char 类型的特殊性。
这里请注意,char 和 unsigned char 都可以使用,但是必须注意取值范围。
- [0, 127]
超出范围的赋值,不会报错,但是它的值就不确定了。请特别注意。
#include < iostream > using namespace std; int main() { char da; // 赋值为字符 'A' da = 'A'; unsigned char shi; // 可以使用 unsigned char shi = 65; // 赋值为数字 65 cout << "da = " << da << endl; // 输出字符变量 cout << "shi = " << shi << endl; // 输出字符变量 int ma; ma = da; cout << "da = " << ma << endl; // 输出字符变量的数值 cout << "da = " << int(da) << end; // 输出字符变量的数值,强制类型转化。 return 0; }
3. 小结 #
- C++ 使用单引号(’)来表示字符常量,比如 ‘A’。
- 字符变量,使用字符赋值,字符会转化成对应的数值,存储到变量中。
- 字符变量,使用数值赋值,数值将直接,存储到变量中。
- 字符变量,使用数值赋值,数值范围不可超过 [0, 127]。
- 字符变量,输出时,存储的数值,将转化成 ASCII 中对应的字符,然后输出到屏幕。