为什么以下程序打印1而不是我输入的内容?

时间:2020-03-27 12:53:07

标签: c printf scanf

我最近想出了具有以下代码的这项作业:

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

2 个答案:

答案 0 :(得分:3)

根据man page for scanf()

“这些函数返回成功匹配和分配的输入项的数量,该数量可以少于所提供的数量,或者在早期匹配失败的情况下甚至为零。”

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

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

答案 1 :(得分:0)

这是因为scanf成功执行后返回1。 如果要打印“ i”,请执行此操作

#include
void main()
{
int i;
scanf(“%d”,&i)
printf(“%d”,i);
}