摘要:除了while循环,C语言中还有 for 循环,它的使用更加灵活,完全可以取代while循环。
for
for 语句的一般形式为:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
它的执行过程如下图:
C语言for循环中的三个表达式
for 循环中的“表达式1(初始化条件)”、“表达式2(循环条件)”和“表达式3(自增或自减)”都是可选项。这三个表达式,可以都有,也可以都没有,也可以有任意的一项或两项,这就是for的灵活性所在。(但分号;
必须保留)
1 修改“从1加到100的和”的代码,省略“表达式1(初始化条件)”:
int main()
{
int i = 1, sum = 0;
for( ; i<=100; i++)
{
sum+=i;
}
}
可以看到,将i=1
移到了 for 循环的外面。
2 省略了“表达式2(循环条件)”,如果不做其它处理就会成为死循环。例如:
for(i=1; ; i++) sum=sum+i;
相当于:
i=1;
while(1)
{
sum=sum+i;
i++;
}
3 省略了“表达式3(自增或自减)”,就不会修改“表达式2(循环条件)”中的变量,这时可在循环体中加入修改变量的语句。例如:
for( i=1; i<=100; )
{
sum=sum+i;
i++;
}
4 省略了“表达式1(初始化语句)”和“表达式3(自增或自减)”。例如:
for( ; i<=100 ; )
{
sum=sum+i;
i++;
}
相当于:
while(i<=100)
{
sum=sum+i;
i++;
}
5 3个表达式可以同时省略。例如:
for( ; ; ) 语句
相当于:
while(1) 语句
6 “表达式1”可以是初始化语句,也可以是其他语句。例如:
for( sum=0; i<=100; i++ ) sum=sum+i;
7 “表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式。
for( sum=0,i=1; i<=100; i++ ) sum=sum+i;
或:
for( i=0,j=100; i<=100; i++,j-- ) k=i+j;
8 “表达式2”一般是关系表达式或逻辑表达式,但也可是数值或字符,只要其值非零,就执行循环体。例如:
for( i=0; (c=getchar())!='\n'; i+=c );
又如:
for( ; (c=getchar())!='\n' ; )
printf("%c",c);