我有这些代码
#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的差异.
当您输入charto时int a; scanf("%d",&a);,它会跳过输入.char保留输入缓冲区中的停留和先前的值a.所以在你的情况下,45是最初的垃圾值a.
但是,当您输入字符时int a; scanf("%c",&a);,将从输入缓冲区中取出字符,并将其等效整数存储在输入缓冲区中a.