对语句(c)
for 语句可以重复语句或复合语句指定的次数。 for 语句的主体是执行的零次或多次,直到一个可选条件变为 false。 可以使用在 for 语句中的选项表达式。for 语句的执行时初始化和更改值。
语法
- iteration-statement:
for ( init-expression 选择 ; cond-expression选择 ; loop-expression 选择 )statement
for 语句继续执行如下所示:
init-expression,如果有,则计算。 对于循环指定初始化。 不会 init-expression类型的限制。
cond-expression,如果有,则计算。 此表达式必须具有算术或指针类型。 它在每次迭代之前进行计算。 三个结果可能适用:
如果 cond-expression 为 true (非零),statement 执行;然后 loop-expression,如果有,则计算。 loop-expression 每次迭代后进行计算。 没有为其类型的限制。 副作用按顺序执行。 处理从 cond-expression的计算然后重新启动。
如果 cond-expression 省略,cond-expression 正确被视为 true 时执行的同时按以上段落所述。 不 cond-expression 参数的一个 for 语句终止,只有 + 当在语句体中一个 break 或 return 语句时,或者,在 goto (对于 for 语句曲线外对 labeled 语句) 时执行。
如果 cond-expression 是 false (0),for 语句的执行将停止,并且控件传递给程序中的下一条语句。
当 break、goto或 return 语句在语句体中执行时,for 语句还停止。 在 for 循环的一个 continue 语句导致 loop-expression 进行计算。 当 break 语句执行。for 循环内时,loop-expression 不会计算也不会执行。 此语句
for( ;; )
为习惯方式导致只能成功的 break、goto或 return 语句的无限循环。
代码
此示例演示 for 语句:
// c_for.c
int main()
{
char* line = "H e \tl\tlo World\0";
int space = 0;
int tab = 0;
int i;
int max = strlen(line);
for (i = 0; i < max; i++ )
{
if ( line[i] == ' ' )
{
space++;
}
if ( line[i] == '\t' )
{
tab++;
}
}
printf("Number of spaces: %i\n", space);
printf("Number of tabs: %i\n", tab);
return 0;
}
Output
Number of spaces: 4
Number of tabs: 2