我有这些代码
#include<stdio.h>
void main()
{
int a;
scanf("%d",&a);
printf("%d",(int)a);
}
我的问题是,当我输入a作为输入时,我得到45作为ASCII等价物,现在我决定将这些代码更改为:
#include<stdio.h>
void main()
{
int a;
scanf("%c",&a);
printf("%d",(int)a);
}
它显示了97的正确答案,我不明白%c的差异。
答案 0 :(得分:5)
当您输入char
到int a; scanf("%d",&a);
时,它会跳过输入。 char
保留在输入缓冲区中,并保留先前的a
值。因此,在您的情况下,45
是a
的初始垃圾值。
但是,当您输入int a; scanf("%c",&a);
中的字符时,该字符将从输入缓冲区中获取,其等效整数存储在a
中。