如何打印输入字符的ASCII码

时间:2014-02-28 17:58:57

标签: c

我有这些代码

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

1 个答案:

答案 0 :(得分:5)

当您输入charint a; scanf("%d",&a);时,它会跳过输入。 char保留在输入缓冲区中,并保留先前的a值。因此,在您的情况下,45a的初始垃圾值。

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