我无法弄清楚为什么程序控制没有到达第三个printf,就在for循环之后。
为什么不打印第三个printf
?
如果我将for循环更改为while循环,它仍然无法打印。
这是程序和输出:
main()
{
double nc;
printf ("Why does this work, nc = %f\n", nc);
for (nc = 0; getchar() != EOF; ++nc)
{
printf ("%.0f\n", nc);
}
printf ("Why does this work, nc = %f", nc);
}
输出结果为:
Why does this work, nc = 0.000000
test
0
1
2
3
4
答案 0 :(得分:4)
它适用于我,你是如何试图终止程序的? for
- 循环应在EOF
检测为getchar()
作为输入后结束。
EOF
Control-Z
(^Z
)和Linux / Unix下的Control-D
(^D
)。一旦我输入,循环终止,我得到最后的printf()
以显示其输出。
作为最后一点(正如@DanielFisher所提到的那样),在最后'\n'
次呼叫结束时添加printf()
,因为您的特定实施可能需要这样做,否则该计划的行为可能会未定义(感谢@KeithThompson和@AndreyT在评论中指出这一点):
printf ("Why does this work, nc = %f\n", nc);
答案 1 :(得分:0)