注1:这篇文章主要参考了http://www.cnblogs.com/lds85930/archive/2007/07/22/827453.html
1、我们先来看最简单的for循环
int i; //i是变量
for(i=0;i<5;i++) //for(表达式 1;表达式 2;表达式 3)语句
//当for循环内只有一条语句的时候,可以省略{}
{
printf("%d",i);
}
它的输出结果是01234
它的执行过程如下:
(1)求表达式1
(2)求表达式2
若其值为真,则执行for循环{}内的语句语句中指定的内嵌语句,然后执行(3)做若为
若其值为假,则结束循环,转到(5)
(3)求解表达式3
(4)返回(2)继续执行
(5)结束循环,执行for语句以后的语句
在本例的for(i=0;i<5;i++) 中,
i=0;是为循环变量i赋初值
i<5;是循环执行的条件
i++;是循环变量的改变语句
2、在c语言的各种循环语句中,要数for最灵活了。无论是循环次数“已经确定”或“循环次数不确定,我们只知道循环结束条件”的情况,它都能处理。
for语句完全可以代替while语句.
刚刚的for循环可以改写为:
i=0;
while(i<5)
{
printf("%d",i);
i++;
}
显然,用for语句更简单、方便。
3、说明:
for(表达式 1;表达式 2;表达式 3)语句
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.
比如,刚刚的for循环可以改写为:
int i=0;
for(;i<5;i++)
{
printf("%d",i);
}
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:
for(i=0;;i++)
{
printf("%d",i);
}
与
i=0;
while(1)
{
printf("%d",i);
i++;
}
等价;
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:
for(i=0;i<5;)
{
printf("%d",i);
i++;
}
这个例子的循环增量没有放在表达式3的位置 而是作为循环体的一部分 其效果是一样的.
(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.
(5)三个表达式都可以省略,如:
for(;;)
printf("爱你!");
相当于
while(1)
printf("爱你!");
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:
(7)遇到多重循环怎么办?
可以试试打印这样的代码来看规律。
for(i=1;i<=4;i++)
{
printf("\n");
for(j=1;j<=6;j++)
{
printf("%dhaha%d",i,j);
printf("\n");
}
printf("中间的for循环被执行了一次");
}