【问题标题】:How to store ASCII code of character in integer in C?如何在C中以整数形式存储字符的ASCII码?
【发布时间】:2017-04-21 02:56:10
【问题描述】:

我正在学习我的 C 课程,我需要将 char 作为输入,并且我想将该字符的 ASCII 值存储在 int 变量中。我知道这可以通过以下方式完成:

int main()
{
    int x;
    scanf("%c", &x);
    printf("%d\n",x);
}

这里的问题是,每当我在 gcc 中编译这个程序并启用 -Wformat 时,我都会收到这个警告:

Warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int *’

根据课程作业的规范,如果有任何编译器警告,我会扣掉一些分数。那么,有没有其他方法可以在没有任何编译器警告的情况下完成所需的任务?


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

【问题讨论】:

  • char x;怎么样
  • @Iluvatar 实际上,我正在扫描一个数组,我还需要存储超出 char 范围的其他整数,所以 char x 对我不起作用
  • 为什么不提供字符数组?数组的每个索引都可以表示输入的数字/字符
  • @maheshRao Char 数据类型只有 1 个字节长,我的程序要求我存储大于 1 个字节的整数

标签: c char int ascii warnings


【解决方案1】:
int main()
{
    signed char x;
    scanf("%c", &x);
    printf("%d\n",x);
}

正确的是将 x 定义为 char 但 int 也可以。

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

如果您需要将字符用作整数,最好使用signed charunsigned char 定义它,具体取决于您想要做什么。

另一方面,printf("%d\n",x) 将正常工作,因为类型强制会将输入的有符号字符转换为整数,正如 printf%d 所期望的那样。

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2019-03-05
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多