如何打印输入字符的ASCII码

Sam*_*uel 2 c

我有这些代码

#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的差异.

Rik*_*yay 5

当您输入charto时int a; scanf("%d",&a);,它会跳过输入.char保留输入缓冲区中的停留和先前的值a.所以在你的情况下,45是最初的垃圾值a.

但是,当您输入字符时int a; scanf("%c",&a);,将从输入缓冲区中取出字符,并将其等效整数存储在输入缓冲区中a.