当我在源代码中插入以下指令块时:
while(qx < xmin || qx > xmax){
if(qx > xmax)
qx = 2 * xmax - qx;
if(qx < xmin)
qx = 2 * xmin - qx;
}
编译器不会返回任何错误,但执行不会结束。 qx
是一个浮点值,xmax
和xmin
是整数值。
我应该修理什么?
[评论更新]:
xmin = 0,xmax = 200且qx是随机值。
答案 0 :(得分:0)
您应该在循环体中使用调试器或printf
来查看qx的值是什么并修复您的逻辑。由于您从未告诉过我们您尝试计算的内容,因此这是唯一可能的答案。
有一点可能是浮点精度。如果qx
是float
,则其精度最多为9位数。因此,如果它的初始随机值大于10 ^ 11左右,2*xmax
项将消失为舍入误差,qx
将在+ 10 ^ 11和-10 ^之间振荡11永远。