条件之间的冲突

时间:2014-05-12 14:20:50

标签: c

当我在源代码中插入以下指令块时:

while(qx < xmin || qx > xmax){
    if(qx > xmax)
        qx = 2 * xmax - qx;
    if(qx < xmin)
        qx = 2 * xmin - qx;
}

编译器不会返回任何错误,但执行不会结束。 qx是一个浮点值,xmaxxmin是整数值。

我应该修理什么?

[评论更新]:

xmin = 0,xmax = 200且qx是随机值。

1 个答案:

答案 0 :(得分:0)

您应该在循环体中使用调试器或printf来查看qx的值是什么并修复您的逻辑。由于您从未告诉过我们您尝试计算的内容,因此这是唯一可能的答案。

有一点可能是浮点精度。如果qxfloat,则其精度最多为9位数。因此,如果它的初始随机值大于10 ^ 11左右,2*xmax项将消失为舍入误差,qx将在+ 10 ^ 11和-10 ^之间振荡11永远。