目录
一.ASCII码讲解
二.非打印字符(转义字符)
三.扩展小知识
一.ASCII码讲解
char类型用于存储字符,从技术层面看,char时整数类型,因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符,美国常用的编码就是ASCII编码
列如,在ASCII码中,整数65代表大写字母A。因此,存储字母A实际上存储的是整数65(许多IBM的大型主机使用的另一种编码-EBCDIC,原理差不多)
标准的ASCII码的范围是0~127,只需要7位二进制数即可表示。而通常char类型被定义为8位的存储单元,所以容纳标准ASCII码绰绰有余
而.char类型变量和打印(%c占位符)
char response = 'A'
这里被单引号括起来的A我们一般称为字符变量,记住不能给 A或“A”,因为A是一个变量,“A”是一个字符串(”A“,里面其实包含两个字符,一个A和\0,字符串都是以\0结束)
这里可以很好的看出来我们先输入一个字符给到ch内存位置上,然后用%c和%d,分别打印变量,就会得到ch和ch的ASCII码65。从这里也可以看出来printf()函数中的转换说明决定了数据的显示方式,而不是数据的存储方式。
二.非打印字符(转义字符)
活跃位置:指的是显示设备(屏幕,电传打字机,打印机等)中下一个字符将要出现的位置,而想\b,\f,\n,\r,\t,\v则会移动活跃位置。
如果你在文本行输入一个a后,活跃位置就会跳到下一个即将输入的位置上。
单引号只适用于字符,数字和标点符号,但浏览ASCII表可以注意到,有些ASCII字符是打印不出来的,这里我们一般就要用到转移序列了
\a:警报铃声,运行响一下
\b:退格(活跃位置往前走,跑到a的位置上)
\f:换页(活跃位置跳到下一页,不过这个效果只能在打印机上才能出现效果)
\n:换行(活跃位置移动到下一行开始位置)
\r:回车(活跃位置跳到行的开头)
\t:水平制表符(活跃位置移到下一个水平制表点。一般位第1,9,17,25个字符的位置)
\v:垂直制表符(活跃位置移到下一个垂直制表点,不过这个效果只能在打印机上才能出现效果)
\\:放斜杠(\):为了和转义字符的反斜杠区分开
\':单引号:为了和单引号括起来的字符常量区分开
\":双引号:为了和双引号括起来的字符串区分开
\0oo:八进制数:为了在双引号之内使用数字表示ASCII表中的符号和效果。
\xhh:十六进制数:为了在双引号之内使用数字表示ASCII表中的符号和效果
下面我们来看一个例子
转义字符练习源代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
float salary;
printf("\07Enter your desired monthly salary:\x7"); //\07和\0x7都相当于ASCII码为7的\a;
printf("$_______\b\b\b\b\b\b\b");
scanf("%f", &salary);
printf("\n\t$%.2f a month is $%.2f a year", salary, salary * 12);
printf("\rGee!\n");
return 0;
}
第一行
printf("\07Enter your desired monthly salary:\x7");
运行响一下
第二行
printf("$_______\b\b\b\b\b\b\b");
7个退格字符使光标左移7个位置,既把光标移至7个下划线字符的前面,紧跟着美元符号后面。但通常,退格符不会擦除退出所经过的字符,所以当我输入4800时,后面三个_字符还在。
第四行
printf("\n\t$%.2f a month is $%.2f a year", salary, salary * 12);
这里主要就是\t水平制表符跳到下一个制表点,我这里是第九个字符位置(第九列)
第五行
printf("\rGee!\n");
\r把光标移动到当前行的开头。
三.扩展小知识
C语言将字符常量其实视为int类型而非char类型(这个其他我在整数存储章节也有提过)。所以当我们把字符存储在32位存储单元时,它只用了8位存储单元,且最后取用的时候,也只用最后八个存储单元的数据。我们来看个例子,
这里大家稍微了解下就好了
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈