if / else和if / elseif

时间:2009-03-12 10:12:05

标签: programming-languages syntax if-statement

如果我有这样的语句块:

if (/*condition here*/){ }
else{ }

或者像这样:

if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}

有什么区别?

似乎使用if / else,如果part为true状态,​​else部分为所有其他可能选项(false)。一个else-if对许多条件都有用。这是我的理解,还有什么我应该知道的吗?

10 个答案:

答案 0 :(得分:21)

如果没有“elseif”语法,您将不得不编写链式if语句来处理以下几种可能结果之一:

if( str == "string1" ) {
   //handle first case
} else {
    if( str == "string2" ) {
       //handle second case
    } else {
       if( str == "string3" ) {
           //handle third case
       } else {
          //default case
       }
    }
 }

而你可以写

if( str == "string1" ) {
   //handle first case
} else if( str == "string2" ) {
   //handle second case
} else if( str == "string3" ) {
   //handle third case
} else {
   //default case
}

与前一个完全相同,但看起来更好,更容易阅读。

答案 1 :(得分:14)

情况a:

if( condition )
{
}
else
{
}

当上述语句中的条件为false时,将始终执行else块中的语句。

情况b:

if( condition )
{
}
else if( condition2 )
{
}
else
{
}

当'condition'为false时,else if块中的语句只会在condition2为true时执行。 当condition2为false时,将执行else块中的语句。

答案 2 :(得分:3)

许多语言都有这样的语法(这里:ECMAScript Language Specification,所以JavaScript):

  

IfStatement
   if ( 表达 ) 声明 else 声明
   if ( 表达式 ) 声明

     

声明
  
   VariableStatement
   EmptyStatement
   ExpressionStatement
   IfStatement
   IterationStatement
   Continue语句
   BreakStatement
   ReturnStatement
   WithStatement
   LabelledStatement
   SwitchStatement
   ThrowStatement
   TryStatement

     

阻止
   { StatementList opt }

     

StatementList
  声明
   StatementList 声明

因此 ifStatement 的分支可能包含一个语句块( Block )或其他一个语句( Block 除外) 。这意味着这是有效的:

if (expr)
    someStatement;
else
    otherStatement;

由于 StatementList 可能只包含一个语句,因此这些示例与上一个示例相同:

if (expr) {
    someStatement;
} else {
    otherStatement;
}

if (expr)
    someStatement;
else {
    otherStatement;
}

if (expr) {
    someStatement;
} else
    otherStatement;

当我们用额外的 IfStatement 替换otherStatement时,我们得到了这个:

if (expr) {
    someStatement;
} else
    if (expr) {
        someOtherStatement;
    }

其余的只是代码格式化:

if (expr) {
    someStatement;
} else if (expr) {
    someOtherStatement;
}

答案 3 :(得分:3)

强调Gumbo所说的话。

此外,如果一种语言有一个真正的elif / elsif / elseif(比如说,一个“真正的”else-if指令,而不是一种通过格式化隐藏的嵌套链接),那么编译器可以轻松地发出单个节点在抽象语法树(或类似,请参阅http://en.wikipedia.org/wiki/Abstract_syntax_tree)而不是嵌套它们。

举个例子:

用C / C ++说,你有:

if (a) {
    X
} else if (b) {
    Y
} else if (c) {
    Z
} else {
    0
}

然后编译器将构建一个这样的AST节点:

   a
  / \
 X   b
    / \
   Y   c
      / \
     Z   0

但如果选择的语言有真实的if-else:

if (a) {
    X
} elif (b) {
    Y
} elif (c) {
    Z
} else {
    0
}

然后AST可以更容易看起来像这样:

   (a--b--c)
   /  /  /  \
  X  Y  Z    0

在这种语言中,只有在大括号不是强制性的情况下才能使用“if else”:

if (a) {
    X
} elif (b) {
    Y
} else if (c) {  // syntax error "missing braces" if braces mandatory
    Z
} else {
    0
}

对应的AST(如果大括号不是必需的):

   (a--b)
   /  /  \
  X  Y    c
         / \
        Z   0

这可以使CFG-Analysis(http://en.wikipedia.org/wiki/Control_flow_graph)更容易实现(虽然可能没有实际的优化优势;因此,它只会让懒惰的程序员受益:D)。

答案 4 :(得分:2)

else if基本上意味着else的{​​{1}}部分是另一个if声明。

答案 5 :(得分:2)

if(condition)
 {
   if(condition)
      statement;
   else 
     statement;
  }   
else if(condition)
{
    if(condition)
     statement;
    else
     statement;
}
else
    statement;

如果/否则为/ else

fixture.detectChanges()

if / else和if / else如果也使用

答案 6 :(得分:0)

给定单个变量,您将使用简单的if-else结构。当存在多个变量且您有不同的路径可以执行不同的可能性时,您将使用if-else if-...-else。请注意,后者也以else语句结束。

答案 7 :(得分:0)

你已经自己给了答案。 if / else用于true / false结果,如int = 2或任何其他可能的int值,if / elseif是否超过2个结果,如int = 2,int = 3等等。

它还对变量的上下文进行分组。您可以检查每个结果,如

if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };

使用if / else / elseif它更易读。

答案 8 :(得分:0)

如果你想查看更多条件我们可以使用if..elseif。单一条件然后我们可以使用if或else ... else。

在这里,我无法通过示例上传完整的说明,因此请通过以下链接。

if..else语句详细信息
http://allinworld99.blogspot.in/2016/02/ifelse-flow-chart-with-easy-example.html
if ... elseif详情
http://allinworld99.blogspot.in/2016/02/flow-chart-with-example-for-if-then.html

答案 9 :(得分:0)

import java.util.*;

public class JavaApplication21 {
    public static void main(String[] args) {

        Scanner obj = new Scanner(System.in);
        System.out.println("You are watching an example of if & else if statements");

        int choice, a, b, c, d;
        System.out.println(" Enter 1-Addition & 2-Substraction");

        int option = obj.nextInt();
        switch (option) {
            case (1):
                System.out.println("how many numbers you want to add.... it can add up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a + b;

                    System.out.println("Answer of adding " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a + b + c;

                    System.out.println("Answer of adding " + a + " , " + b + " & " + c + "  is= " + d);
                }
            case (2):
                System.out.println("how many numbers you want to substract.... it can substract up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a - b;
                    System.out.println("Answer of substracting " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a - b - c;
                    System.out.println("Answer of substracting " + a + " , " + b + " & " + c + "  is= " + d);
                }
            default:
                System.out.println("no option you have chosen" + option);
        }
    }
}