C语言除了while,还有什么循环语句?break和continue的区别是什么?
谢邀。
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 循环语句则至少执行一次循环。例如:
编译执行后,程序会输出 “do while”。使用 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等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。