C 是";如果。。。否则如果。。。否则……”;任何不同于;如果。。。else{if…else…}”;语义上?
我相信你们所有人在学习C语言时都学会了以下语法:C 是";如果。。。否则如果。。。否则……”;任何不同于;如果。。。else{if…else…}”;语义上?,c,if-statement,language-lawyer,C,If Statement,Language Lawyer,我相信你们所有人在学习C语言时都学会了以下语法: if (condition 1) { statements } else if (condition 2) { statements } ... else { statements } 但是在阅读之后,我发现绝对没有谈论链式的else if语句,这与其他语言不同,这些语言为此提供了ElseIf或elif等关键字 根据我的理解,整个if(…){…}else{…}是一个单独的语句(else子句可能不存在,这是不相关的)。所以
if (condition 1) {
statements
} else if (condition 2) {
statements
} ...
else {
statements
}
但是在阅读之后,我发现绝对没有谈论链式的else if
语句,这与其他语言不同,这些语言为此提供了ElseIf
或elif
等关键字
根据我的理解,整个if(…){…}else{…}
是一个单独的语句(else
子句可能不存在,这是不相关的)。所以当涉及到解析时,如下面的代码所示
if (condition) {}
else
one_statement;
第二个块中缩进的if
语句相当于缩进的one_语句代码>在第一个块中,用“语法‘语句’单元”表示
然后,由于C允许灵活的间距,所以空格、制表符和换行符总数为正数的任何组合都是等效的。因此,在重新设置上述代码的间距后,它将变成
if (condition) {
} else if (something else) {
} else {
}
我的理解正确吗
我发现绝对没有任何关于链式else if语句的内容
这是因为链接if
语句并没有什么特别之处,而不是链接if
和循环。任何链接到else
子句末尾的内容都将成为该else
子句的一部分:
if (x)
...
else if (y)
...
else if (z)
...
else
...
上面,if(y)
属于if(x)
的else
分支,以及其分支中的整个语句链。空白并不重要,因此可以按照您在问题底部显示的方式重新格式化链
注意:C确实需要处理的是一种特殊情况,但它发生在嵌套时,而不是链锁时。是的,你的理解是正确的。我可以发誓这是重复的,但我找不到。美国科学
if (x)
...
else if (y)
...
else if (z)
...
else
...