【问题标题】:Why the following program prints 1 instead of what I enter as input?为什么下面的程序打印 1 而不是我输入的内容?
【发布时间】:2020-03-27 12:53:07
【问题描述】:

我最近想出了一个包含以下代码的作业:

#include <stdio.h>
void main()
{
  int i;
  printf("%d", scanf("%d",&i));
}

【问题讨论】:

  • 因为scanf返回成功的读取输入,本例为1
  • 不要使用void main()!使用int main()
  • @RobertSsupportsMonicaCellio 更好,int main(void).

标签: c printf scanf


【解决方案1】:

根据man page for scanf()

“这些函数返回成功匹配和分配的输入项的数量,可以少于提供的数量,如果早期匹配失败,甚至为零。”

因此,它返回成功匹配和存储的 项目数不是它扫描的值),在您的情况下,恰好是 1。然后,@ 987654323@ 打印该值。

也就是说,对于托管环境,void main() 至少应该是 int main(void)

【讨论】:

    【解决方案2】:

    那是因为 scanf 在成功执行时返回 1。 如果你想打印 'i' 这样做

    #包括
    无效的主要()
    {
    &nbsp&nbsp&nbsp&nbsp int i;
    &nbsp&nbsp&nbsp&nbsp scanf("%d",&i)
    &nbsp&nbsp&nbsp&nbsp printf("%d",i);
    }

    【讨论】:

    • "在成功执行时返回 1" 在这种情况下是的,但是您的陈述具有误导性。您应该阅读@Sourav Ghosh 的答案
    猜你喜欢
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2021-08-21
    • 2017-11-20
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多