gpt4 book ai didi

c - 在 C 编程中使用无限循环是否值得推荐/值得重视

转载 作者:行者123 更新时间:2023-11-30 17:10:13 26 4
gpt4 key购买 nike

这是一个例子。对于小程序来说这很好用,但是如果我们正在开发一个实时项目或应用程序怎么办?需要一些建议

while (TRUE )
{
int temp =0 ;
printf ( "How many no's would you like to enter : " ) ;
temp = scanf ( "%d" , &n ) ;
if ( temp==1 )
break ;
else
{
printf ("Invalid input. Try again. \n" ) ;
fflush ( stdin ) ;
}
}

最佳答案

任何循环的问题,无论是 while(TRUE) 还是 while(condition),都是它们倾向于存在潜在的无限循环条件 - 就像这个。

OP 的代码取决于 scanf("%d",...,: 1not 1 的 2 个结果。

如果用户输入“123”,一切都很好。 scanf() 返回 1,循环退出,我们都下类喝一杯。

如果用户输入“abc”scanf()返回0,代码执行fflush(stdin) 清空stdin。 (这确实是 UB,但让我们假装它有效。)代码循环,再次提示,我们的饮料变热,但希望我们最终能够输入数字。

但是让我们想象一下用户关闭了 stdin - 也许代码已重定向输入并且 scanf() 最终返回 EOF。代码循环,但 fflush(stdin) 不会重新打开 stdin,并且 scanf() 再次返回 EOF - 一次又一次 - 真正的无限循环 - 代码不会暂停输入,只是说“”输入无效。再试一次。”翻译成“笨蛋,笨蛋,笨蛋……”。看起来工作人员会在没有我们的情况下开始酿造。

Moral of the story: loop when code is working as intended (User entered good data). Watch out for loops when functions loops on the unexpected.

关于c - 在 C 编程中使用无限循环是否值得推荐/值得重视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962280/

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