第六章 循环 🚀
循环(loop)是重复执行其他语句(循环体)的一种语句。在C语言中,每个循环都有一
个 控制表达式(controlling expression)。每次执行循环体(循环 重复 一次)时都要对控
制表达式求值。如果表达式为真(即值不为零),那么继续执行循环。
C语言提供了3种重复语句,即while语句、do语句和for语句。
break 语句用来跳出循环并把程序控制传递到循环后的下一条语句, continue语句用来跳过本次循环的剩余部分,而 goto 语句则可以跳到函数内的任何语句上。
6.2 do 语句 🚀
do语句和while语句关系紧密。事实上,do语句本质上就是while语句,只不过其控制表达
式是在每次执行完循环体之后进行判定的。
6.3 for 语句 🚀
for语句和while语句关系紧密。事实上,除了一些极少数的情况以外,for循环总可
以用等价的while循环替换:
6.3.1 for 语句的惯用法 🚀
6.3.2 在 for 语句中省略表达式 🚀
for语句远比目前看到的更加灵活。通常for语句用三个表达式控制循环,但是有一些for
循环可能不需要这么多, 因此C语言允许省略任意或全部的表达式。
如果省略第一个表达式,那么在执行循环前没有初始化的操作:
6.3.3 C99 中的 for 语句 🚀
在C99中,for语句的第一个表达式可以替换为一个声明,这一特性使得程序员可以声明一个用于循环的变量:
6.3.4 逗号运算符 🚀
有些时候,我们可能喜欢编写有两个(或更多个)初始表达式的for语句,或者希望在每
次循环时一次对几个变量进行自增操作。使用 逗号表达式(comma expression)作为for语句中第一个或第三个表达式可以实现这些想法。
因为逗号表达式的左操作数在右操作数之前求值,所以赋值运算i = 1、j = 2和k = i + j是从左向右进行的。
提供逗号运算符是为了在C语言要求只能有一个表达式的情况下可以使用两个或多个表达式。换句话说,逗号运算符允许将两个表达式“粘贴”在一起构成一个表达式。(注意与复合语句的相似之处,后者允许我们把一组语句当作一条语句来使用。)
需要把多个表达式粘在一起的情况不是很多。正如后面的某一章将介绍的那样,某些宏定义( 14.3节)可以从逗号运算符中受益。除此之外,for语句是唯一可以发现逗号运算符的地方。例如,假设在进入for语句时希望初始化两个变量。可以把原来的程序