【时时三省】(C语言基础)字符型数据
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
字符型数据
由于字符是按其代码(整数)形式存储的,因此C99把字符型数据作为整数类型的一种。但是,字符型数据在使用上有自己的特点。
字符与字符代码
字符与字符代码并不是任意写一个字符,程序都能识别的。例如代表圆周率的π在程序中是不能识别的,只能使用系统的字符集中的字符,目前大多数系统采用ASCII字符集。各种字符集(包括ASCII字符集)的基本集都包括了127个字符。其中包括:
字母:大写英文字母A ~ Z,小写英文字母a ~ z
数字:0 ~ 9。
专门符号:29个,包括
!”# 8 ( ):;< = > ? 等等
空格符:空格、水平制表符( tab )、垂直制表符、换行、换页( form feed )。
不能显示的字符:空( null )字符(以' \0 '表示)、警告(以' \ a '表示)、退格(以' \ b '表示)、回车(以\ r表示)等。
可以看到,以上字符的ASCI代码最多用7个二进位就可以表示。所有127个字符都可以用7个二进制位表示。所以在C语言中,指定用一个字节(8位)存储一个字符(所有系统都不例外)。此时,字节中的第1位置为0。
注意:
字符' 1 '和整数1是不同的概念。字符' 1 '只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节,而整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节。
整数运算1+1等于整数2,而字符' 1 ' + ' 1 '并不等于整数2或字符' 2 '。
字符变量
字符变量是用类型符char定义字符变量。char是英文character(字符)的编写,见名可知义。如:
char c = ' ? ';
定义c为字符型变量并使初值为字符’? '。?的ASCII代码是63,系统把整数63赋给量c。
c是字符变量,实质上是一个字节的整型变量,由于它常用来存放字符,所以称为字符变量。可以把0 ~ 127之间的整数赋给一个字符变量。
在输出字符变量的值时,可以选择以十进制整数形式输出,或以字符形式输出。
比如:
printf ( " % d % c\n”,c,c );
输出结果是
63 ?
说明:
用“% d”格式输出十进制整数63,用“% c”格式输出字符’?’。
前面介绍了整型变量可以用signed和unsigned修饰符表示符号属性。字符类型也属于整型,也可以用signed和unsigned修饰符。
说明:
在使用有符号字符型变量时,允许存储的值为- 128 ~ 127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0 ~ 127这一部分,其第1位都是0