这个循环将如何无限次执行?
#include <stdio.h>
int main() {
int i;
for (; scanf("%d", &i); printf("%d\n", i));
return 0;
}
答案 0 :(得分:3)
for
循环的条件部分为scanf("%d", &i);
,在用户提供无效输入之前返回true。阅读man 3 scanf
并检查返回值。
更好地运行循环,直到按下Ctrl+d
for (; scanf("%d", &i) != EOF; printf("%d\n", i));
或者比较scanf()
的返回值,因为scanf("%d", &i) == 1
返回1
,只要它能够将用户输入转换为整数。
for (; scanf("%d", &i) == 1; printf("%d\n", i));
答案 1 :(得分:1)
这将持续到scanf
返回零值,因此只要有足够的输入,它就可以永久运行。文件结尾将为零。
这是表达这种逻辑的一种非常难看的方式。只需使用while
。
实际文件的长度不限,但有些像yes
实用程序那样可以生成无穷无尽的输出流,可以通过管道传输到这样的程序中。