如何在C中存储整数字符的ASCII码?

如何在C中存储整数字符的ASCII码?,c,char,int,ascii,warnings,C,Char,Int,Ascii,Warnings,我正在做我的C课程作业,我需要获取字符作为输入,我想将该字符的ASCII值存储在int变量中。我知道这可以通过以下方式实现: int main() { int x; scanf("%c", &x); printf("%d\n",x); } 这里的问题是,每当我在启用了-Wformat的gcc中编译此程序时,都会收到以下警告: Warning: format ‘%c’ expects argument of type ‘char *’, but argument

我正在做我的C课程作业,我需要获取字符作为输入,我想将该字符的ASCII值存储在int变量中。我知道这可以通过以下方式实现:

int main()
{
    int x;
    scanf("%c", &x);
    printf("%d\n",x);
}
这里的问题是,每当我在启用了
-Wformat
的gcc中编译此程序时,都会收到以下警告:

Warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int *’
根据课程作业的规定,如果有任何编译器警告,我会失去一些分数。那么,有没有其他方法可以在没有任何编译器警告的情况下完成所需的任务


在我的实际程序中,我正在扫描一个数组,我还需要存储超出char范围的其他整数,因此我不能使用
char x

int main()
{
    signed char x;
    scanf("%c", &x);
    printf("%d\n",x);
}
正确的做法是将
x
定义为char,但int也可以

Char
由C标准定义为能够保留任何ASCII字符的数据类型,即至少127个可能值。符号不重要,它没有指定

如果需要将字符用作整数,最好使用
有符号字符
无符号字符
来定义它,具体取决于您想要执行的操作


另一方面,
printf(“%d\n”,x)
将正常工作,因为类型强制将把输入的有符号字符转换为整数,正如printf%d所期望的那样可能重复@Iluvatar事实上,我正在扫描一个数组,我还需要存储超出char范围的其他整数,因此
char x
对我不起作用为什么不提供一个字符数组?数组的每个索引都可以表示input@maheshRaoChar数据类型只有1字节长,我的程序要求我存储大于1字节的整数