C语言学习指南:从规范编程到专业级开发
上QQ阅读APP看书,第一时间看更新

7.7 如何把一种循环改写成另一种循环

我们刚才把三种循环语句都讲述了一遍,而且讲解了每一种循环语句的两种实现逻辑(也就是递增式的逻辑与递减式的逻辑),从这些内容中大家应该能够意识到,这些循环语句是有相似之处的。对于由计数器控制的循环来说,我们其实可以很快地把它从一种形式改写为另一种形式。

现在我们就来比较一下,看看由计数器所控制的这三种循环其各个部件之间有着怎样的对应关系。

首先是while()...循环。如果要实现一个由计数器所控制的while循环,那我们会遵照这样的语法来写:

注意,初始化计数器所用的counter_initialization,以及递增(或者说调整)计数器所用的counter_increment,都必须添加到适当的位置,因此,该语法与7.4节所列的基本语法相比会显得稍微复杂一些。

同样一个循环如果改用for()...语句来实现,那么语法就是:

我们完全可以把for()...循环当作while()...循环的特例。

由计数器所控制的循环如果采用do...while()语句来写,那么语法是:

注意,为了控制计数器变量,我们必须把相应的表达式添加到适当的位置,因此,与7.6节所列的基本语法相比,这里的语法会显得稍微复杂一些。

对于由计数器所控制的循环来说,我们首先应该考虑用for()...语句来写,另外两种循环语句其实也可以。但如果我们要实现的是由标记值(sentinel)所控制的循环,那么这几种形式之间就不太容易像刚才那样互相转换了。对于那种循环来说,while()...语句在许多情况下都要比另外两种语句方便得多,如果我们想在找到标记值时结束循环,那么while()...语句的优势会更加明显。