Part1:Ascall码速查
首先,我们来放一张Ascall码的全部内容
那么Ascall码是什么呢?其实计算机在储存char的时候,在内存中保存的是ascall码的形式,char占有的是1个byte=8bit,所以是能够存下0-255的信息。(这里说的是unsigned char)这就是为什么习惯把char分入整形家族。
char //字符数据类型 占1个字节
short //短整型 占2个字节
int //整形 占4个字节
long //长整型 占4个字节
long long //更长的整形 占8个字节
float //单精度浮点数 占4个字节
double //双精度浮点数 占8个字节
Part2:char的输入和输出
2.1:char的正常输入
对于char字符来说,使用scanf和printf函数来做输入输出的时候是%c的方式
char a;
scanf("%c", &a);
printf("%c", a);
2.2:char与其他类型输入输出
那么如果我输入是%d模式呢?我们来看看%c与%d的转化
char a;
scanf("%d", &a);
printf("%c", a);
我们来看看输出结果
输入了F,在ascall码里面是70号,那么此时a的值是没有读进去的,这也侧面告诉我们形式与我们的输入的重要性,这里的bugs不易发现(你看看人家python)
我们理一遍计算机做了什么
计算机先在定义a的地方给a开好空间,
scanf实际上是将读入的信息覆盖在原来开好的空间上,
然后输出的时候按照printf输出。
2.3:char与其他类型输出
char a;
scanf("%c", &a);
printf("%d", a);
如果输出的是%d格式,那么输出的是a的ascall码
Part3:总结一下
1.char在电脑里储存里是以整形存储的,一一对应的关系是基于Ascall码。
2.在scanf里面当输入格式不对的时候是无法读入的。