以下句子之间有什么区别。
if (i1)
if (i2) s1;
else s2;
和
if (i1)
{
if (i2) s1;
else s2;
}
和
if (i1)
{
if (i2) s1;
}
else s2;
答案 0 :(得分:4)
你的第一个代码片段是非常缩进的,应该是:
if (i1)
if (i2)
s1;
else
s2;
这相当于你的第二个片段,但显然与第三个片段非常不同:
if (i1) {
if (i2)
s1;
} else {
s2;
}
此问题称为悬空其他问题。您可以通过在{
命令的块周围始终使用花括号}
和if
来完全避免它。您可以将第一个和第二个片段写为:
if (i1) {
if (i2) {
s1;
} else {
s2;
}
}
和第三个
if (i1) {
if (i2) {
s1;
}
} else {
s2;
}
维基百科有一篇关于这个问题的文章:https://en.wikipedia.org/wiki/Dangling_else