帮我看看,我输入错误,为什么会进入死循环呢

img

ret是成功输入的个数,如果没有成功输入两个数,程序就退不出while循环,所以就死循环来

有一种可能是ret得到了负数。这种情况下,stdin标准输入流会直接变成bad状态(流损坏),并拒绝任何进一步输入,此时再调用scanf总是会直接返回负数。因此,只要scanf返回了负数,就不要再陷入循环中要求重新输入,这种流损坏状态一般是无法恢复的,再如何尝试都只会输入失败;我们一般会直接通过stderr标准错误流输出错误信息后终止进程。