• 【011】C++选择控制语句 if 和 switch 详解


    引言


    💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
    👉
    🎖️ CSDN实力新星,社区专家博主
    👉
    🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
    👉
    🔔 专栏地址:C++从零开始到精通
    👉
    🔔 博客主页:https://blog.csdn.net/Long_xu


    🔔 上一篇:【010】C++运算符详解
    🔔 上一篇:【012】C++循环控制语句 for 和 while 详解

    一、选择控制语句if

    1.1、if 语句的形式

    语法:

    if(条件表达式)
    {
    	语句1;
    	语句2;
    	// ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    条件表达式为真则执行大括号里的语句,否则不执行。if语句如果没有大括号。那么只会执行一条语句。

    场景:如果只在乎项目的某个结果,请选择上面的if语句形式。

    示例:判断一个数是否能被10整除。

    int data =100;
    if(data % 10)
    {
    	cout<<"可以被10整除"<<endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.2、if…else…语句的形式

    语法:

    if(条件表达式)
    {
    	语句1;
    	语句2;
    	// ...
    }
    else
    {
    	语句3;
    	语句4;
    	// ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    条件表达式为真则执行if大括号里的语句,否则执行else大括号里面的语句。

    场景:如果项目中有两种结果,不会同时出现,请选择上面的if…else…语句形式。

    示例:键盘输入一个整数,求其对2的余数。

    #include 
    
    using namespace std;
    
    int main()
    {
    	int data=0;
    	cout<<"请输入一个整数:";
    	cin>>data;
    	if(data%2)
    	{
    		cout<<"余1"<<endl;
    	}
    	else
    	{
    		cout<<"余1"<<endl;
    	}
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    1.3、if…else if… else…语句

    在C++中,if…else if… else…语句被用于控制程序流程。它允许测试多个条件,并根据这些条件之间的关系选择不同的执行路径。

    语法:

    if(条件表达式1)
    {
    	语句1;
    	语句2;
    	// ...
    }
    else if(条件表达式2)
    {
    	语句3;
    	语句4;
    	// ...
    }
    else if(条件表达式3)
    {
    	语句5;
    	语句6;
    	// ...
    }
    // ...
    else
    {
    	语句n;
    	// ...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    注意,else可以不是必须的,允许没有。

    下面是一个简单的示例:

    int num = 10;
    
    if (num > 0) {
        cout << "Number is positive" << endl;
    }
    else if (num < 0) {
        cout << "Number is negative" << endl;
    }
    else {
        cout << "Number is zero" << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在上述代码中,如果变量num大于0,则输出“Number is positive”。否则,如果num小于0,则输出“Number is negative”。最后,如果num等于0,则输出“Number is zero”。

    需要注意的是,在使用if…else if… else…语句时,只有第一个满足条件的分支会被执行。当其中一个分支成功匹配时,其他所有分支都将被忽略。

    另外,还可以使用嵌套if语句来进一步控制程序流程。例如:

    int num1 = 5, num2 = 10;
    
    if (num1 == 5) {
        if (num2 == 10) {
            cout << "Both numbers match" << endl;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在上述代码中,如果变量num1等于5且变量num2等于10,则输出“Both numbers match”。

    二、选择控制语句switch

    2.1、switch语句形式

    switch(表达式)
    {
    	case 常量表达式1:
    		语句1;
    		// ...
    		break;
    	case 常量表达式2:
    		语句2;
    		// ...
    		break;
    	// ...
    	default:
    		语句n;
    		break;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    表达式只能是字符型或整型(char、short、int、long)。
    将表达式的结果与case后的变量表达式的值一一对比,相等就从当前case语句处执行,直到遇到break跳出switch语句。

    示例:键盘输入1~7的数值,判断是星期几。

    #include 
    
    using namespace std;
    
    int main()
    {
    	int data=0;
    	cout<<"请输入1~7的值:";
    	cin>>data;
    	switch(data)
    	{
    	case 1:
    		cout<<"星期一"<<endl;
    		break;
    	case 2:
    		cout<<"星期二"<<endl;
    		break;
    	case 3:
    		cout<<"星期三"<<endl;
    		break;
    	case 4:
    		cout<<"星期四"<<endl;
    		break;
    	case 5:
    		cout<<"星期五"<<endl;
    		break;
    	case 6:
    		cout<<"星期六"<<endl;
    		break;
    	case 7:
    		cout<<"星期七"<<endl;
    		break;
    	default:
    		cout<<"非法数值"<<endl;
    		break;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    三、switch和if…else if…else…比较

    与if…else if… else…不同,switch只能测试单个变量或表达式。在某些情况下,使用switch可以使代码更加简洁和易读。

    例如,如果您需要测试一个变量是否等于多个可能值,则使用if…else if… else…会显得非常繁琐。而使用switch则可以使代码更加清晰和可读:

    int num = 3;
    
    switch (num) {
        case 1:
            cout << "Number is one" << endl;
            break;
        case 2:
            cout << "Number is two" << endl;
            break;
        case 3:
        case 4:
            cout << "Number is three or four" << endl;
            break;
        default:
            cout << "Number is not one, two, three or four" << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在上述代码中,如果变量num等于1,则输出“Number is one”。如果num等于2,则输出“Number is two”。如果num等于3或4,则输出“Number is three or four”。最后,如果num不是1、2、3或4,则输出“Number is not one, two, three or four”。

    四、注意事项

    需要注意的是,在使用switch语句时,每个case标签必须以一个常量表达式开始,并且每个case标签都必须以break语句结尾。当其中一个case标签成功匹配时,其他所有case标签都将被忽略。

    此外,在C++17之前,switch只能测试整数类型(如int、char和enum)。但是,C++17引入了对std::string的支持,使得可以使用字符串作为条件判断。

    总结

    在C++中,选择控制语句用于根据特定条件执行代码。以下是C++中常见的选择控制语句的总结:

    1. if语句

    if语句允许您测试一个条件,并根据结果执行不同的代码路径。

    基本语法:

    if (condition) {
        statement(s);
    }
    else {
        statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    其中,condition是要测试的条件表达式。如果condition为true,则执行第一个代码块(即位于if后面的花括号内的语句)。否则,将执行else后面花括号内的语句。

    1. switch语句

    switch语句用于多路分支控制。它允许您测试一个变量,并根据不同的取值选择不同的执行路径。

    基本语法:

    switch (expression) {
        case constant-expression1:
            statement(s);
            break;
        case constant-expression2:
            statement(s);
            break;
        ...
        default:
            statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其中,expression是一个变量或表达式;constant-expression是一个常量表达式(例如整数、字符或枚举值),并且必须与expression具有相同的类型。case标签必须以一个常量表达式开始,并且每个case标签都必须以break语句结尾。default关键字定义默认情况,在没有任何case标签匹配时执行。

    1. ?:运算符

    ?:运算符也称为三元运算符,它允许您在一个语句中测试一个条件,并根据结果执行不同的代码路径。

    基本语法:

    condition ? expression1 : expression2;
    
    • 1

    其中,condition是要测试的条件表达式。如果condition为true,则expression1将被执行;否则,expression2将被执行。

    1. assert语句

    assert语句用于在程序运行时检查特定条件是否为true。如果不是,则会导致程序崩溃,并且输出错误消息。

    基本语法:

    assert(condition);
    
    • 1

    其中,condition是要测试的条件表达式。如果condition为false,则会触发assertion失败,并导致程序终止。

    这些选择控制语句在C++中非常常见,并且可以帮助您更好地控制程序的流程和逻辑。

    在这里插入图片描述

  • 相关阅读:
    代码随想录day41|343. 整数拆分96. 不同的二叉搜索树
    Android Audio 焦点
    微信“刷掌支付”上线,扫手就可以付款!你知道怎么开通了吗?
    使用股票量化交易接口需要具备怎么样的心态
    马上金九银十了,简历该准备起来了,看这里
    conda常用命令及问题解决-创建虚拟环境
    字节码进阶之javassist字节码操作类库详解
    mmlab花朵分类结果展示(1)
    【笔记】ssh link-local 地址登录
    docker开机启动设置
  • 原文地址:https://blog.csdn.net/Long_xu/article/details/130760357