为什么结果与预期不符?

3

我有如下代码:

#include <stdio.h>
#include <stdlib.h>

static counter = 0;
static flag = 0;

int main()
{
    int number = 3;
    int i = 0;
    for(i; i< number; i++)
    {
        if(counter >= number)
        {
            counter = 0;
            flag = 1;
        }
        counter ++;

        printf("   counter = %u\n", counter);
        printf("   flag = %u\n", flag);

    }



    return 0;
}

每次当计数器达到3时,标志应该是1,但为什么当计数器达到3时,标志仍然是0?

2
因为根据代码,i 永远不会达到 3。请尝试使用 i <= number - Sakthi Kumar
如果我只想循环3次,当循环到第三次时,将标志设置为1? - user707549
然后你可以把 counter++ 放在 for 的旁边,也就是在 if 之前。 - Sakthi Kumar
5个回答

3
你的循环只运行了三次。在最后一次迭代中,在 if 测试期间,counter 的值为 2,number 的值为 3。而且,if 测试失败了。现在 counter 被增加到了3,这就是被打印出来的内容。

2

您没有进入if部分

当i = 3时,您的计数器为2并从循环中退出。


1

因为当 i 变成 3 时,for 循环中的条件失败,导致 if 中的代码永远不会被执行。


1

在你的条件语句之后增加counter,因此如果您确定counter>= number,最大值为2。


if(counter >= number) 之前的一行尝试使用 counter++ - sailingthoms

0

由于下面的代码永远不会被执行,程序已经跳出循环

if(counter >= number)
        {
            counter = 0;
            flag = 1;
        }

所以counter=3flag将保持为0

如果你想在循环结束时将其设置为0,那么只需在if语句上方执行counter++并删除其他counter++(即在if下方的那个)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接