C 知识量:16 - 74 - 317
char类型用于储存字符,比如:字母“a”或标点符号“,”等。但是从技术层面上来说,char是整数类型,因为char类型实际储存的并不是字符,而是用于表达字符的数字编码。例如:在ASCII码中,65代表大写字母A,所以用char类型储存A,实际上储存的是整数65。
C语言把1字节定义为char类型占用的位数,无论是16位还是32位系统,char类型没有区别。
以下是声明char类型的方式:
char word; char A,B;
以上代码声明了char类型的变量word、A和B,声明方法与整数没有什么区别。
要初始化一个字符常量,只需像下面这样:
char letter = 'A';
在C语言中,用单引号括起来的单个字符被称为字符常量。编译器会自动将字符常量转换成相应的代码值。注意:单引号必不可少,而且不能用双引号,双引号定义的是字符串。
因为char类型储存的实际是整数值,因此也可以使用数字代码值来赋值,例如:
char letter = 65;
这样赋值没有错误,但是可读性太差了,最好不要使用这种赋值方法。
在ASCII码中,有些字符是打印不出来的,例如:退格、换行等。如果要表示此类字符,可以使用特殊的符号序列,即转义序列。
转义序列 | 含义 |
---|---|
\a | 警报 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 反斜杠(\) |
\' | 单引号 |
\" | 双引号 |
\? | 问号 |
\0oo | 八进制值 |
\xhh | 十六进制值 |
\a 表示警报,但如何实现取决于硬件情况,通常计算机会发出蜂鸣声,但不会移动屏幕光标。
\b 会把光标后退一位,相当于键盘上的backspace键。
\f 会把光标移动到下一页的开始处。
\n 会把光标移动到下一行的开始处。
\r 会把光标移动到当前行的开始处。
\t 会将光标移动到下一个水平制表点,通常是第1个、第9个、第17个、第25个等字符位置。
\v 会把光标移动到下一个垂直制表点。
\\ 会打印反斜杠“\”。
\' 会打印单引号“'”。
\" 会打印双引号“"”。
\? 会打印问号“?”。
\0oo和\xhh是ASCII码的特殊表示,即ASCII码的八进制表示和十六进制表示。例如:报警字符(\a)可以表示为八进制:'\007',Ctrl+P可以表示为十六进制:'\x10'。
需要注意的是:一些转义序列不一定在所有显示设备上都起作用,例如,换页符和垂直制表符可能会在屏幕上打印奇怪的符号,只有将其输出到打印机上时,才会有预期的效果。
如果要打印char类型数据,printf()函数应当使用%c转换说明来指明待打印的字符。
#include <stdio.h> int main(void) { char letter = 'A'; printf("The letter is:%c\n", letter); printf("As a number,it is:%d", letter); return 0; }
以上代码的运行结果为:
The letter is:A As a number,it is:65
从以上代码可以看出,使用%c转换说明打印的是字符类型,而使用%d转换说明打印就将是整数类型。这也显示出char类型数据在系统内部本质上是按照整数储存的。
在C语言的实现中,有些编译器把char实现为有符号类型,因此,char可以表示的范围是-128~127。还有一些编译器把char实现为无符号类型,因此,char可以表示的范围就是0~255。
根据C90标准,C语言允许在关键字char前面使用signed或unsigned,所以,无论编译器默认char是否有符号,signed char都表示有符号类型,而unsigned char表示无符号类型。如果只使用char处理字符,char前面不需要标注任一种符号。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6