Лучший способ понять этот результат - это понять, что у вас есть два полностью независимых оператора if . Если h <= 160, будет выполнен оператор в первом блоке <em>if . Затем, совершенно отдельно, программа выведет один из двух операторов во втором блоке if ... else , в зависимости от того, h> = 190 или нет:
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!";
}
What вы действительно хотите выполнить второй блок if ... else , только если первый оператор if ложен. Самый ясный способ проиллюстрировать это - заключить второй блок if ... else в термин else для первого оператора if :
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!";
}
}
Надеюсь, этот отступ поможет вам увидеть ход программы.
Существует более простой способ sh сделать то же самое, и его будет легче прочитать, если вы поймете логику выполнения программы c, и это особенно полезно для сокращения количества блоков {} и отступов как можно больше , если добавлены условия:
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!";
}