C++旧版课程库
C++第 2 期查看课程总览

033 字符类型 char

主要内容

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 中对应的字符,然后输出到屏幕。

习题

课后练习