gpt4 book ai didi

c - 为什么我的C程序即使满足退出条件也不跳出while循环

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:55 24 4
gpt4 key购买 nike

#include<stdio.h>
#include <limits.h>

int main()
{
int value;
int smallest = INT_MAX;

printf("This is a program that finds out the minimum \nof serveral integers you entered.");
printf("Please type in these integers: ");

while(scanf("%d", &value) != EOF)
{
printf(" ");

if(value <= smallest)
{
smallest = value;
printf("%d", smallest); // to trace the while loop
}
}
printf("\nThe smallest integer is: %d", smallest); // this will execute once the program is stopped
return 0;
}

这段代码可以成功找到最小的整数,但只是不打印

的结果
printf("\nThe smallest integer is: %d", smallest);

.. 直到我从我的 C 解释器中停止程序。我不明白为什么它不立即打印,因为 while 循环中没有更多的迭代。

最佳答案

更好的结束循环条件是

while (scanf("%d", &value) == 1)

这意味着 scanf()正在成功读取值。

阅读链接以了解为什么在使用 scanf() 时等待 EOF 是不自然的,因为那样用户将不得不按组合键来标记 stdinEOF

这个组合键实际上非常笨拙,对于 linux 终端 Ctrl+D 和 Windows cmd windows Ctrl+Z 是不一样的。

如果它不执行printf()语句,那是因为你需要刷新stdout,要么加上fflush(stdout)或者在每一行的末尾添加一个'\n',在末尾添加一个换行符更自然,虽然我看到很多人在开头添加它。

关于c - 为什么我的C程序即使满足退出条件也不跳出while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com