C语言为了方便的让计算机执行很多次数的迭代运算,提供了循环语句,偶的上一个回答较为详细的介绍了while循环语句,以及它与递归之间的关系。
的确,C语言还提供了其他两种循环语句,供不同的使用环境,和不同使用习惯的程序员使用。此外,C语言还提供了break和continue关键字用于控制循环。下面将一一介绍。
先来说说C语言的break和continue关键字
break和continue关键字的区别还是挺大的,它们的功能是不同的。当C语言程序的循环语句遇到break时,直接跳出整个循环体,而遇到continue时,则结束本次循环,开始一次新的循环。这么说有点虚,还是来看几个例子吧:
以上代码,while(1)本应是个死循环,按理说,程序应该永远停在while循环语句里了。但是在cnt等于3的时候,C语言程序遇到break,于是跳出循环体,printf()将不再被执行。再来看看continue关键字:
代码很简单,就是把cnt依次从0加一加到4,然后打印出它的值。程序最后输出:”1,3,4,“,少了2对不?
这是因为在cnt等于2的时候,直接就结束本次循环,跳到循环体开头的条件表达式了,也即cnt等于2的时候,printf()语句被跳过了。
现在应该理解“当循环语句遇到break时,直接跳出整个循环体,而遇到continue时,则结束本次循环,开始一次新的循环。”这句话了。
题主应注意“整个”和“本次”这两个词。
另外要说明的是,break和continue应作为独立的语句,要用;结尾。
现在明白了C语言循环控制关键字break和continue的功能和区别了,再来看看另外两种循环语句:do/while循环语句,和for循环语句。
C语言的do/while循环语句
do/while循环语句和while循环语句非常像,只是do/while循环语句把条件表达式放在后面,它的语法如下:
do{
语句;
}while(条件表达式);
程序遇到do/while循环语句后,会先执行循环体里的语句,到末尾才判断条件表达式真假决定是否循环。
说到这里,就看出它与while循环语句的区别了:如果条件表达式为假,while循环直接就被跳过了,不会执行;而do/while循环语句则至少执行一次循环。例如:
编译执行后,程序会输出“dowhile”。使用do/while语句要注意的事项和while语句一致,只是还要确保do/while语句的最后while后一定要有“;”,否则编译器无法判断这是一个do/while循环的结尾还是另一个while循环的开头。
再来说说C语言的for循环
先看看for循环的结构:
for(控制表达式1;控制表达式2;控制表达式3)
语句
如果不考虑continue(为什么呢,可以思考一下),则for循环等价于下面的while循环:
控制表达式1;
while(控制表达式2){
语句
控制表达式3;
}
下面用for循环来计算n!,请看如下C语言代码:
题主可点偶主页,查看偶上一个回答中使用while循环语句计算n!的C语言代码,对比和理解二者之间的差异。
++i的作用和i+1;i=i+1;一样,如果i=0,那么执行a=++i;语句后,a等于1,i也等于1。类似还有–i,表示自减。
现在来分析一下for语句:“i=1”,表示for循环体里的i从1开始;“i<=n”,表示如果i<=n为真,则循环,否则跳出循环;++i表示每执行一次循环,就把i加一。
到这里,相信题主已经知道C语言循环语句一大家子和它的管家们(break,continue)了吧,要理解它们的区别其实很简单,只要把各个语句的功能和机制彻底弄懂,应该明白,C语言是一门极其重视基本功的编程语言。
欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢偶的文章就关注一波吧,可以看到最新更新和之前的文章哦。