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?

4

5 回答 5

3

您循环仅运行 3 次。在最后一次迭代中,在if测试期间,值为counter2,值为number3。并且 if 测试失败。现在计数器递增到 3,这是打印的内容。

于 2012-11-20T12:01:09.197 回答
2

你没有达到if-section

当 i = 3 你有 counter = 2 并从循环中消失。

于 2012-11-20T12:01:21.140 回答
1

因为里面if的代码永远不会执行,因为 for 中的条件在i变为 3 时会失败。

于 2012-11-20T12:00:28.830 回答
1

counter在你的条件之后增加,所以如果你确定counter >= number它最大为 2。

于 2012-11-20T12:02:15.293 回答
0

因为下面的代码永远不会到达并且程序退出了循环

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

所以counter=3并将flag继续存在0

如果您想将其设置0为何时退出循环,那么只需执行

counter++在语句上方if并删除另一个counter++(在 if 下方)

于 2012-11-20T12:06:00.880 回答