QBasic Do Until循环出现无限循环与垃圾值问题求助
QBasic Do Until循环无限循环及垃圾值问题解析
核心原因
你的循环终止条件设置为X=100,但初始值X=1,每次执行X=X+2时,X始终是奇数,而100是偶数,X永远不可能等于100,因此循环会无限执行。
垃圾值出现的原因
QBasic默认使用16位整数,取值范围是-32768到32767。当X持续加2,数值超过32767时会触发整数溢出,数值会绕回负数区间(例如32767+2会变成-32767),后续继续循环时就会出现看似“垃圾值”的负数,循环仍不会终止。
为什么x=x+1或x=x+3时正常
x=x+1:从1开始每次加1,必然能到达100,满足终止条件,循环正常结束。x=x+3:1加上3的倍数可以等于100(1+3×33=100),刚好触发终止条件,循环正常结束。
而x=x+2、5、6这类增量,1加上它们的倍数永远无法得到100(比如1+5n=100时,99不是5的倍数;1+6n=100时,99也不是6的倍数),因此X永远达不到终止值,导致无限循环。
修正方案
将终止条件改为X>100(或X>=100),这样当X超过100时就停止循环,示例代码:
X=1 Do Until X>100 Print X; X=X+2 Loop End
执行后会正常输出1,3,5,…,99并结束循环。
内容的提问来源于stack exchange,提问作者InfoWorld
相关产品推荐
相关产品推荐

