我有一些代码如下:
#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?
答案 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=3
和flag
将保持0
如果要在循环结束时将其设置为0
,请执行
counter++
语句上方 if
并删除其他counter++
(在if下面)