C++中组合使用多个 if…else 结构

C++中组合使用多个 if...else 结构

需要根据多个条件执行不同任务时,嵌套 if 语句很有用,也可组合使用多个 if...else 结构。

C++ 中的 if...else if...else 语句的语法:

cpp 复制代码
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 结构告诉用户它是以哪颗星星命名的。

cpp 复制代码
#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 Sunday
    cin >> 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;
    else
        cout << "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++后台高级服务器课程

相关推荐
无名猿2 小时前
手写一个线程池:任务队列、工作线程与停止顺序的三个设计点
c++·性能优化·并发编程·现代c++
longlongzihan2 小时前
LeetCode 128. 最长连续序列 —— 从排序到哈希集合
数据结构·c++·算法·leetcode·排序算法·哈希表
多弗朗皮卡丘2 小时前
C++多继承
开发语言·c++·多继承
SWAGGY..2 小时前
【C++进阶】:(7)红黑树的原理与 C++ 实现:结构设计、插入调整及性质验证
android·java·开发语言·c++·算法
(Charon)2 小时前
【C++面试】堆内存与栈内存:string、vector和对象到底存在哪里
开发语言·c++·面试
xlq223223 小时前
全面复习3
c++
(Charon)3 小时前
【C++面试】迭代器失效是什么?vector、list、map中如何避免迭代器失效
c++·算法·面试
苏辰澈3 小时前
C++自己的族谱规则:继承详解下
c语言·开发语言·c++·visualstudio
朝朝辞暮i4 小时前
C++ 第 36 课:Action——机械臂/VLA 非常重要
开发语言·c++·算法·ros2
无名猿4 小时前
锁进阶:atomic_flag 自旋锁、shared_mutex 读写锁与无锁的代价
c++·性能优化·并发编程·现代c++