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

atl*_*one 2 c debugging for-loop

我现在已经引用堆栈溢出大约3个月了,99%的时间我可以找到我需要的东西,但我似乎找不到任何能在C中找到解释此错误消息的内容.

我对C很新,但我只是试图使用for循环从int更改的值中减去25,假设该值已经大于25.我得到的错误消息是

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

这让我感到困惑,因为我不通过指定更改-25修改循环体中的变量'change'?

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Uwe*_*eim 6

(根据要求,这是我的评论作为答案)

你的循环for (int change = n * 100; change >= 25; change - 25)永远不会修改变量change.

您只需从变量的值中减去25 change,返回结果并立即再次丢弃它.

而不是

change - 25
Run Code Online (Sandbox Code Playgroud)

使用

change -= 25
Run Code Online (Sandbox Code Playgroud)

这是简称

change = change - 25
Run Code Online (Sandbox Code Playgroud)

有关for循环的信息,请参阅Wikipedia页面以了解有关语法的更多信息.

从那里摘录:

for (initialization; condition; increment/decrement)
    statement
Run Code Online (Sandbox Code Playgroud)

所以for循环中的第三部分应该是递增/递减.