为什么这是一个无限循环?

时间:2014-12-16 18:31:10

标签: c loops final

首先对不起,我真的认为这是一个愚蠢的问题,但我已经坚持了一段时间。也许你可以帮助我。问题是我不能真正理解代码中的错误。所以让我们来看看。

void enter()
{
    int init= 1, end= 2;
    float jump= 0.2;
    create(init, end, jump);
}

void create(int Init, int End, float Jump)
{
    float i;
    int total = 0;
    for(i = Init; i < End; i + Jump)
        total += 1;
}

它没有退出循环,我不明白为什么。

3 个答案:

答案 0 :(得分:4)

问题在于:

i + Jump

这不会改变i,它只是评估。将其更改为:

i += Jump

它应该可以正常工作。

答案 1 :(得分:2)

循环是无限的,因为变量i在循环中没有被更改。更改此声明

for(i = Init; i < End; i + Jump)

for(i = Init; i < End; i += Jump)

也许有一种感觉来定义函数,因为返回类型int不存在?例如

int create(int Init, int End, float Jump)
{
    //...
    return total;
}

答案 2 :(得分:0)

i + Jump这不会修改i,因此根据初始条件i < End小于{{TRUEInit总是被评估为End 1}})。

您需要更改为i += End以继续增加i.

的值