for循环在C中无法正确执行

时间:2015-04-08 05:16:50

标签: c for-loop

以下函数中的for循环似乎无法正确存储。返回range_angle的值是第一个值,我知道这个值不正确。此外,我的compute_landing_distance函数(此处未显示)工作正常,因此它必须是for循环中的内容:

for (theta_l_deg=22.5; theta_l_deg<=83;.01)
{
    x_f = compute_landing_distance(v0,theta_l_deg);

    if (x_f > range_distance)
    {
        range_distance = x_f;
        range_angle = theta_l_deg;
    }

    else
    {
    break;
    }
}

return range_angle;

我希望此循环以theta_l_deg为增量从22.5 = 83运行到.01,并返回该范围内range_angle的最大值。另外,我知道C只以弧度计算,compute_landing_distance函数考虑了这一点。

3 个答案:

答案 0 :(得分:4)

for (theta_l_deg=22.5; theta_l_deg<=83;.01)

应该是

for ( theta_l_deg = 22.5 ; theta_l_deg <= 83 ; theta_l_deg += 0.01 )

在原始代码中,您没有增加theta_l_deg

的值

答案 1 :(得分:4)

for (theta_l_deg=22.5; theta_l_deg<=83; theta_l_deg+=0.01)
{
    x_f = compute_landing_distance(v0,theta_l_deg);

    if (x_f > range_distance)
    {
        range_distance = x_f;
        range_angle = theta_l_deg;
    }

    else
    {
    break;
    }
}

return range_angle;

答案 2 :(得分:3)

循环错误,缺少增量

for (theta_l_deg=22.5; theta_l_deg<=83;.01)

应该是

for (theta_l_deg=22.5; theta_l_deg<=83; theta_l_deg += .01)

阅读http://floating-point-gui.de/并注意0.01 可以完全代表IEEE754

顺便说一句,如果使用GCC,您应该使用所有警告和调试信息进行编译:{{1​​}}。