对语句(c)

for 语句可以重复语句或复合语句指定的次数。 for 语句的主体是执行的零次或多次,直到一个可选条件变为 false。 可以使用在 for 语句中的选项表达式。for 语句的执行时初始化和更改值。

语法

  • iteration-statement:
    for ( init-expression 选择 ; cond-expression选择 ; loop-expression 选择 )statement

for 语句继续执行如下所示:

  1. init-expression,如果有,则计算。 对于循环指定初始化。 不会 init-expression类型的限制。

  2. 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

请参见

概念

语句(c)