if-else vs if-else-if-else

时间:2013-03-08 17:43:15

标签: c conditional-statements

在else中使用if else和else或if else和其他条件之间是否有任何区别。例如,

if (i == 5)
  printf("i is 5");
else if (i > 5)
  printf("i is greater than 5");
else
  printf("i is less than 5");

OR

if (i == 5)
  printf("i is 5");
else {
  if (i > 5)
    printf("i is greater than 5");
  else
    printf("i is less than 5");
}

执行没有区别。两个片段都会给出相同的结果,但就像我们应该使用后者或第一个片段一样,因为一个是更好的编程习惯,而另一个则不是。

3 个答案:

答案 0 :(得分:6)

使用else ifelse { if之间没有功能差异。这纯粹是一种风格决定。

我冒昧地说,大多数开发人员更喜欢else if。使用else { if会导致基于相同数据的逻辑不必要的缩进。

答案 1 :(得分:1)

使用最明确表达的情况:

if (file_opened_successfully)
...
else
{
   if (file_does_not_exist)
   ...
   else if (file_permissions_not_set)
   ...
   else if (file_wrong_type)
   ...
   else
   ...
}

外部决定严格地是二元的;要么我们可以打开文件,要么我们不能。如果我们可以打开文件,我们会正常处理它,否则我们需要处理错误。

但是,我们无法打开文件有多种可能的原因,我们的错误处理取决于原因是什么原因。所以这是一个多路分支,而不是严格的二元分支。

答案 2 :(得分:0)

我通常使用第一种方法,如果条件与第一种方法相关,否则我会使用数字2,但它只是你感觉舒服。