“复杂嵌套”“for / if语句”是否真的遵循C标准?

时间:2013-11-24 06:34:58

标签: c++ c mingw32

我知道

for (...; ...; ...)
    printf ("Fulfill the limits.");

if  (...)
    printf ("Fulfill the limits.");

是C标准。

但是

for (...; ...; ...)
    if (...)
       for (...; ...; ...)
           if (...)
              for (...; ...; ...)
                  printf ("Fulfill all the limits.");

编译成功,运行时没有(逻辑)错误。

复杂嵌套/ if语句是否真的遵循C标准或只是 mingw32 编译器特定的

任何参考?

感谢。

2 个答案:

答案 0 :(得分:4)

这是完全有效的语法。语法并不复杂,只是嵌套为x1 + (x2 + (x3 + ..)

也就是说,if/for 一个语句,if/for 包含一个语句。这可以在recursive BNF grammar rules

中看到
statement:
   "if" "(" expression ")" statement |
   "for" "(" expression? ";" expression? ";" expression? ")" statement |
   ..

答案 1 :(得分:2)

是。您的复杂(当然不是:))嵌套for / if语句遵循C标准。但是

 if (...; ...; ...)  

不符合C标准。