for循环问题
#include <stdio.h>void main(void)
{
int count = 0;
for (int i = 0; i < 6; i++)
{
printf("%d\n", i);
if (i == 4&&count<1)
{
i = 1;
count++;
}
}
}
//最终输出是:012342345
//i到4的时候,重新把i置于1了,为什么输出是从2开始? 本帖最后由 小超超超 于 2021-7-24 23:15 编辑
i重置为1之后,重新来到for语句不是再执行了一次i++了么 因为执行if语句后i=1,在下一次循环之前有i++这一步,导致下一次循环开始时,i=2了
该循环在这里相当于这样:
i = 0;
while(i<6)
{
printf("%d\n", i);
if (i == 4&&count<1)
{
i = 1;
count++;
}
i++;
} for循环执行顺序:
1、执行for循环体里的第一个参数,也就是定义一个int整形变量,其变量名为i,并初始化为0。
2、 执行完第一个参数里的代码后,会执行第二个参数,判断i是否小于6。
3、当第二个表达式为True时会去执行循环体里的代码,也就是当 i < 6的时候。
4、执行完循环体里的代码后,就会去执行for循环的第三个参数也就是 i ++。
5、当以上流程执行完成之后,进入非第一次执行循环时就不会执行for循环第一个参数了。
6、而是直接去执行第二个参数里的判断表达式。
7、然后在去执行循环体里的代码。
8、然后在执行for循环的第三个参数。
最后直到参数二,“i>= 6”的时候循环才会结束。
当 i = 4 时,执行完 if 语句的代码后,即来到了第四步,就会去执行for循环的第三个参数也就是 i ++,
然后 i = 2,再执行循环体里的代码,打印出2.
I == 1 之后
结束了这一次 for循环 执行 i++
就等于2了
重新把i置于1的时候,还在for循环中,结束这次循环会自动i++。
所以是从2开始。 C语言循环打印出1~999的数表
#include <stdio.h>
#define __MAX__ 1000UL
int main ( int argc, char *argv [ ] )
{
int i = 1;
while ( i < __MAX__ )
{
if ( i % 10 == 0 )
{
printf("\n");
}
printf("%-5d ", i );
i++;
}
fflush(stdin);
getchar();
return 0;
} starry~~ 发表于 2021-7-26 11:18
for循环执行顺序:
1、执行for循环体里的第一个参数,也就是定义一个int整形变量,其变量名为i,并初 ...
感谢。 i=1后循环结束进行循环调整i++,i此时等于2
页:
[1]