#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
结果是1,无论如何。
7
1
我已经多次使用scanf并且从未遇到过这种情况。这是什么交易?
答案 0 :(得分:3)
这是正确的,因为scanf()
返回成功匹配和转换元素的数量。在您的情况下考虑正确的输入,每次输入通过转换时,您都可以看到值1。
注意,scanf()
不会返回扫描值本身,它会将值存储在传递的参数中。
引用C11
,章节§7.21.6.4
[...]
scanf
函数返回 分配的输入项目数量,可以少于提供的数量,甚至为零 早期匹配失败的事件。
答案 1 :(得分:0)
scanf的返回类型是指示它是否成功读取整数。
这将满足您的期望
#include <stdio.h>
int main() {
int days = 0;
scanf("%d", &days);
printf("%d", days);
return 0;
}