为什么我的if-else语句会流向第三个呢?

See*_*ist 1 c++ loops if-statement

我试图了解这种控制语法是如何工作的.

注意:这是我的int.main功能的一部分:

while(cin >> Options){
    if(Options == 1){ //If I enter '1' here it will output: "aHi.Else."
        cout << "a";
    }else{
        cout << "hi";
    }
    if(Options == 2){ //If I enter '2' here it will output: "hiaElse."
        cout << "a";
    }else{
        cout <<"Hi.";
    }
    if(Options == 3){ //If I enter '3' here it will output: "hiHi.a"
        cout << "a";
    }else{
        cout << "Else." << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

它为什么会滴到else's什么东西?语法有什么问题?我糊涂了?我如何使用多个if语句而不else's包括在内?你能给我举个例子吗?

Gol*_*rol 6

ifs不依赖于对方,所以如果Options是什么,但1,将执行第一else分支if语句,即使选项为2或3.这同样适用于其他IFS.由于Options只能是1或2或3(或其他),您将始终获得else其他ifs 的输出.

您可以链接else,if如果您想要将多个条件相互链接.在下面的示例中,else如果Options既不是1,也不是2,也不是3 ,则最后只执行.

while(cin >> Options){
    if(Options == 1){
        cout << "a";
    }
    else if(Options == 2){
        cout << "b";
    }
    else if(Options == 3){
        cout << "c";
    }
    else{
        cout << "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

或使用switch声明:

while(cin >> Options){
    switch(Options){
      case 1:
        cout << "a";
        break;
      case 2:
        cout << "b";
        break;
      case 3: 
        cout << "c";
        break;
      default:
        cout << "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)