当我在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>
答案 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!";
*
* }
/*****************************************************/
"You are too small!"
。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
。