在前面发布的内容中,我们已经详细讲述过了一种循环语句,即while语句,今天再来与大家分享一下for语句。
for语句的语法
for(exp1;exp2;epx3)
循环语句;
其中,exp1为初始化部分,exp2为判断部分,epx3为调整部分
下面我们用while循环和for循环都打出同一种代码来比较一下
Q:打印1-10的数字
1.while循环
#include<stdio.h>
int main()
{
int a = 0;
while(a<10)
{
printf("%d\n",a);
a++;
}
return 0;
}
2.for循环
#include<stdio.h>
int main()
{
int a =0;
for(a=0;a<10;a++)
{
printf("%d\n",a);
}
return 0;
}
这样,两个代码段一对比,我们就能明显的看出差别。在while语句中,初始化,判断,调整三部分分布较远,如果想要调整的话比较麻烦(与for循环相比),而for循环呢,可以直接在()中进行调整,比较方便。
tip
个人建议,若要使用for循环,在判断部分的变量取值最好使用前闭后开的样式。
例如:
int a;
for(a=0;a<10;a++);
和
int a;
for(a=0;a<=9;a++);
两个代码段表达的意思相同,都是a循环10次,可是在第一种开区间的表示中,我们可以明显看出循环次数,即a<10中的10是有意义的。
for循环中的break和continue
for循环中的break和continue其实和while循环中的相差无几。在for循环中,只要遇到了break,就跳出循环;遇到continue,就跳过后面的代码,直接进入下一次循环。
一些for循环的变种
其实,在for循环中,exp1,即判断部分可省略,但是不建议初学者省略,容易导致一些问题。
下面我给大家举例
int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
for (; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
int main()
{
int i = 0;
int j = 0;
for (i=0; i < 10; i++)
{
for (j=0; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
第一种和第二种很容易看出差别,其实就是第一种for循环中的判断部分已经被省略了,那这样,我们进入第一个for循环后,进入第二个for循环,j不停的++。而在跳出第二个for循环后,i+1,此时再进入第二个for循环,发现j没有初始化部分,j已经是10了,那么就不会再次进入for循环。最终结果就是,第一个代码段打印10个hehe,第二个代码段打印100个hehe
for循环的小判断
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)
k++;
return 0; }
判断一下一共会进行几次循环??
其实这道题考察的主要是细心程度,我们看到,在判断部分中,用了k=0这个表达式,这个与k==0可是大相径庭,k=0表示将k赋值为0,此时判断为假,则永远不进入循环。