【问题标题】:K&R C while loop omitting bracesK&R C while 循环省略大括号
【发布时间】:2014-01-10 06:38:59
【问题描述】:

据我了解,对于包含多个语句的任何“语言中的标准构造”(例如 for 循环/if 语句等。我不知道它的真正含义),您都需要打开和关闭大括号。那么,为什么这个 K&R C 有效...

while((len = getline(line, MAXLINE)) > 0)
  if(len > max) {
    max = len;
    copy(longest, line);
  }

while 循环中没有大括号,但它确实包含多个语句(当 if 为真时)。这是来自 K&R 的 The C Programming Language 第 2 版中的示例 1.9。

【问题讨论】:

  • while 循环只包含一个语句:if 语句。
  • if-block 算作一个语句...等等,真正的问题在哪里?
  • iffordo ... while 也可以这样做。任何可以有块语句的地方,如果只有一个语句,那么大括号可以省略(函数体除外)。虽然它起源于旧的 K&R C,但它也符合现代标准。
  • 对此的答案确实需要引用标准 IMO...
  • while 循环是while (condition) statementif (condition) { statements } 是一个声明。额外的大括号是可取的(我会把它们放在那里)但不是必需的。

标签: c


【解决方案1】:

在您的情况下,您的 while 循环下只有一个语句,即 if 条件。在这种情况下,这段代码是正确的。

【讨论】:

    【解决方案2】:

    因为if 被读取为while 的单个语句体。这是完全有效的。

    【讨论】:

    • 完全有效的 Javascript,IIRC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2014-08-06
    • 2019-06-28
    相关资源
    最近更新 更多