C语言进阶指南(5)(数据类型——char类型详解)

*欢迎来到博主的专栏——C语言进阶指南

博主的id是——reverie_ly*

@toc

字符类型char类型的整型值被称为字符类型,char类型只占用一字节的大小,他的数值在-128~127(signed char型),或者0-256(unsigned char型)。

编译器根据字符表来将这些二进制数据转换成字符数据来输出如在asiil码表中(65对应‘A’),(97对应‘a’)。讲这些字符存入内存中时,会将这些字符数据根据字符表转换成对应的二进制数据。

不同的编译器上可能会使用不同的字符表

ascii码目前国际上最常用的字符表就是ASCII码表。ASCII码表的具体编码如下:

字符常量常用的字符有0——‘\0’,32——‘ ’(空格字符),65——‘A’,97——‘a’。

A~Z的ASCII值在(65—90)。a—z的ASCII码值在(97—122)。数字0—9也是连续的二进制值。

字符类型的输入/输出既然我们知道了每个字符都有其对应的整型值

以ASCII码值为例:

我们可以用字符类型进行整型数的算术加减

代码语言:c复制 int i;

i = 'a' - 'A';//i的值为32我们可以发现字符型常量竟然还能加减法,再比如我们打印a~z时。

代码语言:c复制char ch = 'a';

for (ch = 'a'; ch <= 'z'; ch++)

printf("%c", ch);

return 0;注意的是这种写法是很隐喻的,程序可读性不高,而且不同的编译器使用不同的字符表时,相应的字符二进制值不一定对应,也降低了程序的可移植性。所以我们要尽量避免用字符表示整型数字的编程方法(尽管他很取巧)。

%c是字符类型数据的转换说明。

代码语言:c复制char ch = 'a';

int i = 65;

printf("%c", ch);//结果是'a'

printf("%c", 65);//结果是'A'

printf("%c", i);//结果是'A'

return 0;如果用输入函数来读取字符

代码语言:c复制char ch;

scanf("%c",&ch);我们可以发现尽管是int类型的数据都能够用%c转换说明。

转义字符:(注意转义字符也是一个字符)转义字符是难以用键盘打出的字符。前面介绍了部分转义字符,这里给大脚梳理一下

\n——换行符

\a——蜂鸣符

\b——退格符

\f——换页符

\r——回车符

\t——水平制表符

\v——垂直制表符

\——表示一个斜杠符号

\?——一个问号符

\'——单引号

\""——双引号。

getchar()函数代码语言:c复制char ch;

ch=getchar();类似于scanf函数,使用键盘输入一个字符。注意getchar()函数返回值还可以直接使用。

代码语言:c复制putchar(getchar());

printf("%c",getchar());我们也可以用这种方法,来持续的输入

代码语言:c复制int main()

{

char ch;

while ((ch = getchar()) != '\n')

printf("%c", ch);

}putchar()函数代码语言:c复制char ch = 'a';

putchar(ch);//打印a

return 0;字符的输出函数,我们前面已经了解printf()输出函数,putchar函数也是类似,但是只能用于打印字符,对比printf函数的优点在于简洁。