【问题标题】:Does "complicated-nested" "for/if statement" really follow the C standards?“复杂嵌套”“for/if 语句”真的遵循 C 标准吗?
【发布时间】:2013-11-24 06:34:57
【问题描述】:

我知道

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

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

是 C 标准。

但是

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

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

complicated-nested for/if 语句真的遵循 C 标准还是只是 mingw32 特定于编译器的

有什么参考吗?

谢谢。

【问题讨论】:

  • if 的括号标准是从什么时候开始的?
  • @chris 抱歉,这是一个错字。我编辑了。

标签: c++ c mingw32


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    不在 C 标准中。

    【讨论】:

    • @EricPostpischil 好吧...当你们俩都在讨论 C 语法时,我已经阅读了我的参考书。在书中,正如 EricPostpischil 所说,我在 C 语言中找不到任何语法。我唯一能找到的是for(;;) Statement;if() Statement是正确用法,而且书中没有提到complicated-nested是否正确用法,但是complicated-nested可以用过时的Turbo C编译器完美编译, 和 GCC/Mingw。
    • @KVD 没有“复杂的嵌套”语句之类的东西。从语法上可以推断出在for inside 和if inside for, etc... 中使用if 是有效的。它是隐含的,因为(即递归定义)是定义它的最方便的方式。所以它在标准中,你只需要正确阅读它。
    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多