为什么不允许第二种语法?

时间:2017-02-21 04:54:25

标签: c

for ( declaration expressionopt ; expressionopt ) statement

for循环的第二种语法只有一个分号,但每当我尝试使用它时,它会产生一个错误,说:

error: expected `;` before `)` token

1 个答案:

答案 0 :(得分:7)

C11标准为for循环指定了两种形式(§6.8.5迭代语句):

  
      
  • for ( 表达式 opt ; 表达式 opt ; 表达式 opt ) 声明
  •   
  • for ( 声明 表达式 opt ;表达式 opt _ ) 声明
  •   

'声明'的规则以分号结尾,因此for循环的控制部分中必须有两个分号。

  

§6.7声明

     

声明:
   declaration-specifiers init-declarator-list opt ;
   static_assert声明