C 为什么结果不是预期的?
我有一些代码如下:C 为什么结果不是预期的?,c,loops,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
#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;
}
#包括
#包括
静态计数器=0;
静态标志=0;
int main()
{
整数=3;
int i=0;
对于(i;i=编号)
{
计数器=0;
flag=1;
}
计数器++;
printf(“计数器=%u\n”,计数器);
printf(“标志=%u\n”,标志);
}
返回0;
}
每次计数器达到3时,标志应为1,但为什么当计数器达到3时,标志仍为0?因为当
i
变为3时,for中的条件失败,因此从不执行if中的代码。循环仅运行3次。在上一次迭代中,在if
测试期间,计数器的值为2,number
的值为3。如果测试失败。现在计数器增加到3,这就是打印的内容。如果您到达部分,则不会到达
当i=3时,计数器=2并从循环中退出。在条件后增加计数器
,因此,如果确定计数器>=number
,则最大值为2。,因为下面的代码从未到达,程序退出循环
if(counter >= number)
{
counter = 0;
flag = 1;
}
因此counter=3
和flag
将保持0
如果您想在它退出循环时将其设置为0
,那么只需这样做即可
counter++
位于if
语句上方,并删除另一个counter++
(位于if下方),因为i
从未按照代码到达3
。尝试i如果我只想循环3次,循环达到第三次,请将标志设置为1?然后您可以将计数器+++
放在的旁边。我的意思是在if
之前尝试counter++
在if(counter>=number)