【发布时间】:2018-09-19 20:50:03
【问题描述】:
相信大家在学习C的时候都学过这个语法:
if (condition 1) {
statements
} else if (condition 2) {
statements
} ...
else {
statements
}
但是在阅读N1570, § 6.8.4.1 The if statement 之后,我发现完全没有谈论链接的else if 语句,这与其他为此目的提供诸如ElseIf 或elif 之类的关键字的语言不同。
根据我的理解,整个if(...){...}else{...}是一个单独的语句(else子句可能不存在,这无关紧要)。所以在解析的时候,如下代码所示,
if (condition) {}
else
one_statement;
if (condition) {}
else
if (something else) {} else {}
第二块缩进的if语句等同于第一块缩进的one_statement;,就“句法'语句'单元”而言。
然后,由于 C 允许灵活的间距,空格、制表符和换行符的聚合正数的任何组合都是等效的。所以把上面的代码重新间隔后,就变成了
if (condition) {
} else if (something else) {
} else {
}
我的理解正确吗?
【问题讨论】:
-
是的,你的理解是正确的。
-
我可以发誓这是骗人的,但我找不到。
-
美国科学
标签: c if-statement language-lawyer