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