for 循环中的控制结构和流程
for ([declaration-or-expression]; [expression2]; [expression3])
{
/* body of the loop */
}
在 for
循环中,循环条件有三个表达式,都是可选的。
- 第一个表达式
declaration-or-expression
初始化循环。它在循环开始时只执行一次。
Version >= C99
它可以是循环变量的声明和初始化,也可以是通用表达式。如果它是声明,则声明的变量的范围受 for
语句的限制。
Version < C99
C 的历史版本只允许表达式,这里,循环变量的声明必须放在 for
之前。
- 第二个表达式
expression2
是测试条件。它首先在初始化后执行。如果条件是true
,则控件进入循环体。如果不是,它会在循环结束时转移到循环体外部。随后,在每次执行正文以及更新语句之后检查此条件。当true
时,控件移回到循环体的开头。该条件通常用于检查循环体执行的次数。这是退出循环的主要方式,另一种方法是使用跳转语句 。 - 第三个表达式
expression3
是更新语句。它在每次执行循环体后执行。它通常用于递增变量保持循环体执行次数的计数,并且此变量称为迭代器。
循环体的每个执行实例都称为迭代。
例:
Version >= C99
for(int i = 0; i < 10 ; i++)
{
printf("%d", i);
}
输出是:
0123456789
在上面的例子中,首先执行 i = 0
,初始化 i
。然后,检查条件 i < 10
,其评估为 true
。控件进入循环体并打印 i
的值。然后,控制转移到 i++
,将 i
的值从 0 更新为 1.然后,再次检查条件,并继续该过程。这一直持续到 i
的值变为 10.然后,条件 i < 10
评估 false
,之后控件移出循环。