【011】C++条件控制语句全解析:if、switch一网打尽!

引言


💡 作者简介:专注分享高性能服务器后台开发技术知识,涵盖多个领域,包括C/C++、Linux、网络协议、设计模式、中间件、云原生、数据库、分布式架构等。目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。公众号《Lion 莱恩呀》
👉
🎖️ CSDN实力新星、专家博主,阿里云博客专家、华为云云享专家
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


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

一、选择控制语句if

1.1、if 语句的形式

语法:

if(条件表达式)
{
	语句1;
	语句2;
	// ...
}

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

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

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

int data =100;
if(data % 10)
{
	cout<<"可以被10整除"<<endl;
}

1.2、if…else…语句的形式

语法:

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

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

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

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

#include <iostream>

using namespace std;

int main()
{
	int data=0;
	cout<<"请输入一个整数:";
	cin>>data;
	if(data%2)
	{
		cout<<"余1"<<endl;
	}
	else
	{
		cout<<"余1"<<endl;
	}
	return 0;
}

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;
	// ...
}

注意,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;
}

在上述代码中,如果变量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;
    }
}

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

二、选择控制语句switch

2.1、switch语句形式

switch(表达式)
{
	case 常量表达式1:
		语句1;
		// ...
		break;
	case 常量表达式2:
		语句2;
		// ...
		break;
	// ...
	default:
		语句n;
		break;
}

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

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

#include <iostream>

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;
}

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

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

基本语法:

switch (expression) {
    case constant-expression1:
        statement(s);
        break;
    case constant-expression2:
        statement(s);
        break;
    ...
    default:
        statement(s);
}

例如,如果需要测试一个变量是否等于多个可能值,则使用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;
}

在上述代码中,如果变量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只能测试整数类型(如intcharenum)。但是,C++17引入了对std::string的支持,使得可以使用字符串作为条件判断。

五、总结

在C++中,选择控制语句用于根据特定条件执行代码。

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

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

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

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

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值