[英]Why does program not execute final printf statement?
我无法弄清楚为什么在for循环之后,程序控制没有到达第三个printf。
为什么第三张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
对我来说效果很好,您打算如何终止该程序? 一旦getchar()
EOF
检测为输入,则for
循环应结束。
EOF
在Windows下是Control-Z
( ^Z
),在Linux / Unix下是Control-D
( ^D
)。 输入此内容后,循环终止,并得到最终的printf()
以显示其输出。
作为最后的说明(如@DanielFisher所述),在最终的printf()
调用的末尾添加一个'\\n'
,因为您的特定实现可能会要求它,否则程序的行为可能是不确定的(感谢@ KeithThompson和@AndreyT在评论中指出了这一点):
printf ("Why does this work, nc = %f\n", nc);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.