C语言中的for循环以及do...while循环

for循环
语法结构

for(表达式1;表达式2;表达式3)
	循环语句;

表达式1为初始化部分.用于初始化循环变量.
表达式2位条件判断部分,用于判断循环终止的时候.
表达式3为调整部分,用于循环条件的调整.
来看一个例子,加入我们要使用for循环打印1-10的数字,程序如下

#include <stdio.h>
int main(){
	int i;
	for(i = 1; i < 11; ++i){	//for(初始化;判断部分;调整部分)
		printf("%d\n",i);
	}
	return 0;
}

for循环执行流程
1.执行表达式1(int i = 1) //注意在表达时1中定义变量在有些版本的编译器中是不能通过的;
2.执行表达式2(i < 11);
3.执行循环体;
4.执行表达式3(++i);
5.执行表达式2;
6.执行循环体;
7.执行表达式3.

我们来看一下for循环和之前学过的while循环的对比.

int i = 0;
while (i < 11){		//判断部分
	printf("haha\n");
	i = i + 1;		//调整部分
}

同样的功能,我们用for循环来实现.

for(i = 0; i < 11; ++i){
	printf("haha\n");
}

通过对比我们不难发现,在while循环中依然存在循环的三个条件,但由于语句结构不同,三个部分相隔可能会较远,这样在我们查找和修改的时候就不够集中和方便.由此,for循环的结构更好一些,在我们的工程实际中,使用频率也更高.
for循环中break和continue.
在我们的for循环使用当中,也会经常出现break和continue,他们的用法及意义和在while循环中如出一撤.但由于语句结构不同,我们在使用break和continue的时候还是要考虑清楚.
对于for循环语句循环控制变量的一些建议:
1.不要在for循环体内去修改循环变量,防止for循环失去控制.
2.通常建议for语句的循环控制变量的取值采用前闭后开区间写法.
最后来看一下for循环当中的变种.

1.第一种情况
#include <stdio.h>
int main(){
	for(;;){
		printf("haha\n");
	}
	return 0;
}
2.第二种情况
#include <stdio.h>
int main(){
	int x,y;
	for (x = 0,y = 0; x < 2 && y < 5; ++x, y++){
		printf("haha\n");
	}
	return 0;
}

在上面的第二种情况里出现的++x和y++,前置++和后置++都是自增1,但是表达式的返回值不同.
前置++,返回的是自增之后的值;
后置++返回的是自增之前的值.
来看一道题目,如下:

#include <stdio.h>
int main(){
	int i = 0;
	int k = 0;
	for(i = 0, k = 0; k = 0; i++,k++){
		k++;
	}
	return 0;
}

问这个循环会执行多少次?
其实答案为0次,仔细观察我们条件判断部分,k = 0,在这里其实给k赋值为0,而不是比较等于,赋值为0后,则条件判断部分为假,就不会在执行下去了,即为0次.
do…while循环
语法结构

do
	循环语句;
while(表达式);

do…while语句特点
循环至少执行一次,使用的场景十分有限,并不是经常使用.
看一个例子;

#include <stdio.h>
int main(){
	int i = 10;
	do{
		printf("%d\n",i)
	}while(i < 10);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44781107/article/details/88930085