循环条件中使用的变量未在循环主体中修改

时间:2018-07-13 04:53:09

标签: c debugging for-loop

我已经引用堆栈溢出大约3个月了,在99%的时间内,我可以确切地找到所需的内容,但是似乎找不到任何能用C解释此错误消息的内容。

我对C很陌生,但是我只是想使用一个for循环从int change的值中减去25,假设该值已经大于25。 我收到的错误消息是

  

“错误:循环条件中使用的变量'change'未在循环主体[-Werror,-Wfor-loop-analysis]中修改”

哪个让我感到困惑,因为我没有通过指定更改-25来修改循环体中的变量“更改”?

int main(void)
{
    float n;
    do
    {
        n = get_float("How much change do I owe you?: ");
    }
    while (n < 0);

    for (int change = n * 100; change >= 25; change - 25)
    {
        printf("%i", change);
    }
}

2 个答案:

答案 0 :(得分:6)

(作为of request,这里是my comment作为答案)

您的循环for (int change = n * 100; change >= 25; change - 25)从不修改变量change

您只需从变量change的值中减去25,返回结果并立即将其丢弃。

所以不是

change - 25

使用

change -= 25

哪个缩写

change = change - 25

请参阅the Wikipedia page about the for loop,以详细了解语法。

从那里摘录:

for (initialization; condition; increment/decrement)
    statement

因此for循环中的第三部分应该是增量/减量。

答案 1 :(得分:0)

如果要完成的工作是打印出使n == 0所需的硬币数量,请知道您当前正在打印循环的最终产品,剩下的就是最终产品。我知道的唯一原因是因为我在参加CS50课程时犯了同样的错误