1.屏幕输入与键盘缓冲区存储
根据ASCII表存储ASCII值。
若输入97+回车键,则缓冲区存储的是39h,37h,0Ah.
2.整型格式输入
scanf("%d",&a);
过程:
scanf按照%d格式最多扫描buffer中前4个字节。
如果在读取buffer前四个字节中没有遇到回车符,那么将4个字节按照%d转化为4个字节的整型。
如果在读取buffer前四个字节中遇到回车符,那么将回车符前面的几个字节按照%d转化为4个字节的整型。
4个字节的整数按照最低位字节,次低位,次高位,最高位依次存放在以&a开始的地址上。即&a放最低位字节,&a+1放次低位...
最后将回车符之前的和回车符本身从缓冲区中删除。
举例:
如果输入258+回车键,而a的定义有如下的几种可能:
char a;//地址&a的单个字节中存放的是最低位字节
char a[4];//地址&a的单个字节中存放的是最低位字节,&a+1放次低位...,即a[0]为02h,a[1]为01h,a[2]为00h,a[3]为00h。
char a[2];//地址&a的单个字节中存放的是最低位字节,&a+1放次低位...,即a[0]为02h,a[1]为01h。
对于以上的char a;和char a[2];来说,当4个字节的整数给&a开始的地址赋值时,会发生地址越界,这是很危险的。
所以a的定义至少4个字节才是安全的。
3.字符格式输入
scanf("%c",&a);
过程: