目录
二、字符常量(character constant)和初始化
一、介绍
1、功能:用于储存字符;表示较小的整数
- 字符:用特定的整数表示
比如:ASCII码
- 范围:0~127
- 只需7位二进制数即可
2、本质:整数类型(因为char类型实际储存的是整数)
3、存储空间:8bit == 1byte
4、可在char前面加上signed或unsigned来指明具体使用哪一种类型
二、字符常量(character constant)和初始化
1、定义:用单引号括起来的单个字符
char broiled; //声明char类型变量
broiled = 'T; //‘T’是一个字符常量
broiled = T; //error, T是一个变量
broiled = "T"; //“T”是一个字符串
2、字符是以数值形式储存的,可使用数字代码值来赋值
char broiled = 65;
3、C语言将字符常量视为int类型而非char类型
- 可以把4个独立的8位ASCII码储存在一个32位存储单元中
- 只有最后8位有效
#include <stdio.h>
int main() {
char ch = 'FATE'; //32位,4字节
printf("%c\n", ch); //E,仅最后1byte有效
return 0;
}
三、 非打印字符
1、单引号只适用于字符、数字、标点符号
%c:待打印的字符 | %d:字符对应的ASCII码 | |
'字符' | 字符 | 对应的ASCII码 |
'数字' | 位于个位的数字 | 对应的ASCII码 |
'标点符号' | 标点符号 | 对应的ASCII码 |
数字 | 对应的ASCII值 | 数字 |
#include <stdio.h>
int main() {
char a = 'a';
printf("%c,%d\n", a, a); //a, 97
char a = '12';
printf("%c,%d\n", a, a); //2, 50
char a = '.';
printf("%c,%d\n", a, a); //.,46
char a = 65;
printf("%c,%d\n", a, a); //A, 65
}
2、表示方法
- ASCII码
- 蜂鸣字符的ASCII值为7,char beep = 7;
- 使用转义序列表示一些特殊的字符
- 必须用单引号把转义序列括起来
转义序列 / 转义字符 | 含义 | |
\a | 警报(ANSI C) | 不改变活跃位置 |
\b | 退格 | 输出控制字符 把活跃位置移至上一个字符处,覆盖输出 |
\f | 换页 | 输出控制字符 把活跃位置移至下一页的开始处 输出到打印机上时才会产生前面描述的效果 |
\n | 换行 | 输出控制字符 把活跃位置移至下一行的开始处 |
\r | 回车 | 输出控制字符 把活跃位置移至当前行的开始处,覆盖输出 |
\t | 水平制表符 | 输出控制字符 把活跃位置移至下一个水平制表点 (通常是第1个、第9个、第17个、第25个等字符位置) |
\v | 垂直制表符 | 输出控制字符 把活跃位置移至下一个垂直制表点 输出到打印机上时才会产生前面描述的效果 |
\\ | 反斜杠(\) | |
\' | 单引号 | |
\" | 双引号 | |
\? | 问号 | |
\0oo | 八进制值 (oo必须是有效的八进制数, 即每个o可表示0~7中的一个数) | |
\xhh | 十六进制值 (hh必须是有效的八进制数, 即每个o可表示0~f中的一个数) |
活跃位置(active position):显示设备(屏幕、电传打字机、打印机等)中下一个字符将出现的位置;屏幕光标位置 == 活跃位置
- 无论是普通字符还是转义序列,只要是双引号括起来的字符集合,就无需用单引号括起来
- 字符串:双引号中的字符集合
- 尽量使用转义序列,这样写不仅好记,可移植性更高
- '007'更清晰地表达程序员使用字符编码的意图,因为007可以嵌入C的字符串中