为什么结果没有预料到?

时间:2012-11-20 11:57:33

标签: c loops

我有一些代码如下:

#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?

5 个答案:

答案 0 :(得分:3)

你的循环只运行3次。在上一次迭代中,在if测试期间,counter的值为2,number的值为3.并且if测试失败。现在,计数器增加到3,这就是打印的内容。

答案 1 :(得分:2)

您未到达if - 部分

当i = 3时,你的计数器= 2并从循环中传出。

答案 2 :(得分:1)

因为当if变为3时,for中的条件失败,所以i内的代码永远不会被执行。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

因为永远不会达到以下代码并且程序没有循环

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

因此counter=3flag将保持0

如果要在循环结束时将其设置为0,请执行

counter++语句上方

if并删除其他counter++(在if下面)