c ++多个if语句。为什么其他语句也会执行?

时间:2020-08-07 10:03:43

标签: c++ conditional-statements

当我在else语句之前执行if语句时,代码将正确执行。但是,当我执行远离else语句的if语句时,c ++将执行所选的“ if语句”,但还将执行“ else语句”。那里发生了什么事?

我知道如何修复我的代码,而else语句不会执行问题。 我只想知道当我放置两个或多个if语句和else语句时c ++的作用或流程的工作方式。为什么if语句已经执行时else语句为什么执行?

例如以下代码: 如果我输入的值小于160,则第一个if语句将执行,而else语句也将在其后执行。

<script>
      function initMap() {
        var myLatlng = {lat: 23.133899799999995, lng: 14.812842999999999};

        var map = new google.maps.Map(
            document.getElementById('map'), {zoom: 16, center: myLatlng});

        // Create the initial InfoWindow.
        var infoWindow = new google.maps.InfoWindow(
            {content: 'Click the map to get Lat/Lng!', position: myLatlng});
        infoWindow.open(map);

        // Configure the click listener.
        map.addListener('click', function(mapsMouseEvent) {
        // Close the current InfoWindow.
        infoWindow.close();

        // Create a new InfoWindow.
        infoWindow = new google.maps.InfoWindow({position: mapsMouseEvent.latLng});
        infoWindow.setContent(mapsMouseEvent.latLng.toString());
        infoWindow.open(map);
        
        //Show latitude and longtitude on the site
        var l =mapsMouseEvent.latLng.toString();
        document.getElementById("latlng").innerHTML=l;
        
        });   
      }
    </script>

3 个答案:

答案 0 :(得分:4)

了解此结果的最好方法是认识到您有两个完全独立的 if 语句。如果h <= 160,则将执行第一个 if 块中的语句。然后,根据h> = 190是否完全不同,程序将在第二个 if ... else 块中输出两个语句之一:

if (h <= 160) {
    cout << "You are too small!";
}
// the following is a separate statement
if (h >= 190) {
    cout << "You are too tall!";
}
else {
    cout << "You have the appropriate height. You are qualified!";
}

您真正想做的是仅在第一个 if 语句为false时才执行第二个 if ... else 块。阐明此问题的最清晰方法是将第一个 if 语句的第二个 if ... else 块括在 else 术语内: / p>

if (h <= 160) {
    cout << "You are too small!";
}
else {
    if (h >= 190) {
        cout << "You are too tall!";
    }
    else {
        cout << "You have the appropriate height. You are qualified!";
    }
}

希望缩进可以帮助您查看程序流程。

有一种更简单的方法可以完成相同的事情,一旦您理解了程序流程逻辑,阅读起来可能会更清楚,并且在减少{}块和缩进数量的情况下尤其有用,如果 条件已添加:

if (h <= 160) {
    cout << "You are too small!";
}
else if (h >= 190) {
    cout << "You are too tall!";
}
else {
    cout << "You have the appropriate height. You are qualified!";
}

答案 1 :(得分:3)

c ++将执行所选的“ if语句”,但还将执行“ else语句”。那里发生了什么事?

这两个if语句是分开的,而else是第二个if语句的一部分:

/* One if statement block  ************************/
 *       if(h<=160){
 *          cout << "You are too small!";
 *            
 *        }
/*************************************************/

/* Second if Statement block, "else" is part of it. Only one of them can be true */
 *        if(h>=190){ 
 *            cout << "You are too tall!";
 *            
 *        }
 *        else{ 
 *            cout << "You have the appropriate height. You are qualified!";
 *            
 *        }
/*****************************************************/
  1. 如果 h小于160,则第一个语句为 true ,您将在输出中看到"You are too small!"
  2. 然后检查第二个 IF ,如果第一个为 true ,则第二个显然为 false ,因为h较小大于160。如果为 false ,则将执行else块。

只要您写:

if (...)  {}
else  {}

以上其中之一被执行,即if块或else块。

请注意,还有else if条语句,您可以像这样使用:'

    if (h <= 160) {  //1st check
        cout << "You are too small!";
    }
    else if (h >= 190) { //second check
        cout << "You are too tall!";
    }
    else { //third
        cout << "You have the appropriate height. You are qualified!";
    }

现在,这三个是一项条件检查的一部分。一次只能运行其中一个。

答案 2 :(得分:2)

如果我输入的值小于160,则第一个if语句将执行,而else语句也将在其后执行。

这就是if语句的工作方式-完全符合预期。

  • 因为满足条件(h <160),所以第一个if被执行。注意:现在,第一个if都完成了。

  • 第二个if完全独立于第一个if。并且由于不满足条件,因此执行else