区别于"如果"不同{结构的句子

时间:2016-02-14 11:07:39

标签: c if-statement

以下句子之间有什么区别。

if (i1)
   if (i2) s1;
else s2;

if (i1)
{  
   if (i2) s1;
   else s2;
}

if (i1)
 {
  if (i2) s1;
 }
else s2;

1 个答案:

答案 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