C++中组合使用多个 if…else 结构
需要根据多个条件执行不同任务时,嵌套 if 语句很有用,也可组合使用多个 if…else 结构。
C++ 中的 if…else if…else 语句的语法:
if(boolean_expression 1)
{// 当布尔表达式 1 为真时执行
}
else if( boolean_expression 2)
{// 当布尔表达式 2 为真时执行
}
else if( boolean_expression 3)
{// 当布尔表达式 3 为真时执行
}
else
{// 当上面条件都不为真时执行
}
当使用 if…else if…else 语句时,以下几点需要注意:
一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。
以下示例程序让用户输入星期几, 并使用一组 if…else 结构告诉用户它是以哪颗星星命名的。
#include <iostream>
using namespace std;int main()
{enum DaysOfWeek{Sunday = 0,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};cout << "Find what days of the week are named after!" << endl;cout << "Enter a number for a day (Sunday = 0): ";int dayInput = Sunday; // Initialize to Sundaycin >> dayInput;if (dayInput == Sunday)cout << "Sunday was named after the Sun" << endl;else if (dayInput == Monday)cout << "Monday was named after the Moon" << endl;else if (dayInput == Tuesday)cout << "Tuesday was named after Mars" << endl;else if (dayInput == Wednesday)cout << "Wednesday was named after Mercury" << endl;else if (dayInput == Thursday)cout << "Thursday was named after Jupiter" << endl;else if (dayInput == Friday)cout << "Friday was named after Venus" << endl;else if (dayInput == Saturday)cout << "Saturday was named after Saturn" << endl;elsecout << "Wrong input, execute again" << endl;return 0;
}
输出:
Find what days of the week are named after!
Enter a number for a day (Sunday = 0): 5
Friday was named after Venus
再次运行的输出:
Find what days of the week are named after!
Enter a number for a day (Sunday = 0): 9
Wrong input, execute again
分析:
第 22~37 行的 if-else-if 结构检查用户输入并生成相应的输出。第二次运行的输出表明,如果用户输入的不是 0~6,即不对应于一个星期的任何一天,程序将指出这一点。这种结构的优点是,非常适合用于检查互斥的条件,即星期一不可能是星期二,而无效输入不与一个星期的任何一天对应。另一个有趣的地方是,在 if 语句中使用了第 5 行声明的枚举 DaysOfWeek。原本可以将用户输入与整数(如
0 表示星期天等)进行比较,但通过使用枚举量 Sunday,代码的可读性更强。
该文章会更新,欢迎大家批评指正。
推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程