【问题标题】:Character type gives an int — what is this int?字符类型给出一个 int——这个 int 是什么?
【发布时间】:2021-12-28 13:06:06
【问题描述】:

在 C 程序中,我想输入一个 int 类型的输入,但在我运行程序后,我会给出一个字符类型作为输入,但它没有出现任何错误,并且它显示一个整数。为什么?

代码:

#include <stdio.h>

int main(){

    int x;

    printf("input: ");

    scanf("%d", &x);

    printf("the output is %d",x);

    return 0;

}

编译后:

input: a
the output is -1225407932
[Program finished]

【问题讨论】:

  • 查看scanf的返回值。
  • @Md ART 变量x没有初始化,可以输出任何垃圾。
  • 您确实收到了错误,但您忽略了它。 scanf() 函数返回 0 表示它未能将任何输入转换为数字(但有数据要处理;它没有遇到 EOF)。您键入的字符仍在输入缓冲区中,等待后续 I/O 操作处理。

标签: c


【解决方案1】:

您确实收到了错误,但您忽略了它。

当您键入ascanf() 被告知期待一个整数时,它返回0 表示它未能将任何输入转换为数字(但有数据要处理;它没有遇到EOF)。您键入的字符仍在输入缓冲区中,等待后续 I/O 操作处理。

您传递给scanf() 的变量x 在调用后仍未初始化——它未被scanf() 修改,因为转换失败。从技术上讲,打印诸如x 之类的未初始化变量会调用未定义的行为,但实际上,您会得到一些准随机值输出。

【讨论】:

    【解决方案2】:

    如果你已经初始化了变量,你会得到输出为 0。它不会给出错误,因为 char 只是一个 8 位整数,可以适应 int。

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多