写在前面
从本文开始,内容基于谭浩强C程序设计第五版,因此,和前两讲(基于第二版)的目录对不上。
3.2.4 字符型数据
- 由于字符是按其代码(整数)形式存储的,因此 C99 把字符型数据作为整数类型的一种。
0. 字符常量
对前文常量的一种补充。
-
字符常量有两种表现形式:
-
(1)普通字符
-
用单撇括号括起来的一个字符,如:‘a’、‘Z’、‘3’、‘?’、‘#’。
-
一般是按其 ASCII 代码存储。如:字符’a’的ASCII代码是 97,因此在内存中存放的是 97 的二进制形式。(同学们这里就可以写一个简单的程序测试一下,实践是检验真理的唯一标准)。
#include <stdio.h> int main(void) { char c1,c2;//定义两个字符型变量 c1 = 'a'; c2 = 'A'; printf("字符a=%d,字符A=%d",c1,c2); return 1; }
- 运行结果:
字符a=97,字符A=65
-
-
(2)转义字符
-
以“\”开头的字符序列。如在 printf 打印函数中经常出现 ‘\n’ 代表一个换行符。‘\t’ 代表一个 Tab 制表位置(1个Tab占用8列)。
-
它是一种无法显示的“控制字符”。
-
转义字符表不用背,常用的几个用的多了也就记住了,不常用的用时再查阅即可。
-
1. 字符与字符代码
字符与字符代码不是任意写一个字符,程序都能识别的,例如圆周率 π 在程序中就不能识别。目前大多数系统采用的是 ASCII 字符集,一共是127(二进制 7 个全 1)个字符,因此,用一个字节(8位)存储即可。(ASCII 表也是不要大家背的,用时查表即可)。
2. 字符变量
-
字符变量是用类型符 char 定义。
#include <stdio.h> int main(void) { char c = '?'; //定义字符变量c,并赋初始值为字符'?' printf("%d, %c",c,c); return 1; }
- 运行结果:
63, ?
- 系统将字符 ‘?’ 的 ASCII 值 63 赋给了变量 c。
- 运行结果:
-
字符型数据的存储空间和值的范围
类型 | 字节数 | 取值范围 |
---|---|---|
[signed] char(有符号字符型) | 1 | -128 ~ 127,即 -27 ~ (27-1) |
unsigned char(无符号字符型) | 1 | 0 ~ 255,即 0 ~ (28-1) |
本节完