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

news/2025/2/11 20:51:40/

C++控制语句之if和switch语句

  • 引言
  • 一、选择控制语句if
    • 1.1、if 语句的形式
    • 1.2、if...else...语句的形式
    • 1.3、if...else if... else...语句
  • 二、选择控制语句switch
    • 2.1、switch语句形式
  • 三、switch和if...else if...else...比较
  • 四、注意事项
  • 总结

引言


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


🔔 上一篇:【010】C++运算符详解

一、选择控制语句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;
}

表达式只能是字符型或整型(char、short、int、long)。
将表达式的结果与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可以使代码更加简洁和易读。

例如,如果您需要测试一个变量是否等于多个可能值,则使用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只能测试整数类型(如int、char和enum)。但是,C++17引入了对std::string的支持,使得可以使用字符串作为条件判断。

总结

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

  1. if语句

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

基本语法:

if (condition) {statement(s);
}
else {statement(s);
}

其中,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);
}

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

  1. ?:运算符

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

基本语法:

condition ? expression1 : expression2;

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

  1. assert语句

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

基本语法:

assert(condition);

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

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

在这里插入图片描述


http://www.ppmy.cn/news/76718.html

相关文章

一题都看不懂,大厂面试真的变态......

最近我的一个读者朋友去了字节面试&#xff0c;来给我发信息吐槽&#xff0c;说字节的面试太困难了&#xff0c;像他这种三年经验的测试员&#xff0c;在技术面&#xff0c;居然一题都答不上来&#xff0c;这要多高的水平才能有资格去面试字节的测试岗位。 确实&#xff0c;字…

Scrum的执行过程及产品Backlog梳理的目的、时间、内容

Scrum的迭代运行过程 产品Backlog梳理 目的&#xff1a; •对下个Sprint的需求进行需求细节梳理和精化&#xff0c;识别技术风险和依赖&#xff0c;完成估算和优先级排序。 时间&#xff1a; •本Sprint开始后第6天&#xff0c;2小时以内 。 内容&#xff1a; •理解需求…

小魔驼3.0下探至9万元背后,是毫末智行的“高位再进化”

作者 | 曾响铃 文 | 响铃说 是60分到90分难&#xff0c;还是90分到95分难&#xff1f; 这个问题不难回答——较高基数上的小幅度上升&#xff0c;要比较低基数上的大幅度上升困难得多。 这个道理在很多领域都十分适用&#xff0c;那些前沿技术领域更是如此&#xff0c;越到…

fastapi基础篇

文章目录 简介环境搭建安装基础文件自动文档 基础使用POST请求传递参数返回定制信息jinja2返回html 简介 FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Python 3.6 并基于标准的 Python 类型提示。 关键特性 快速&#…

shell 免交互

文章目录 Here Document 免交互实验多行注释基本命令 实验 Here Document 免交互 使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、cat 或 read 命令。是标准输入的一种替代品可以帮助脚本开发人员不必使用临时文件来构建输入信息&#xff0c;而是…

如何学习vue

Vue.js是一种流行的JavaScript框架&#xff0c;用于构建交互式Web应用程序。它是一种轻量级的框架&#xff0c;易于学习和使用&#xff0c;并且具有许多强大的功能。如果你想学习Vue编程&#xff0c;下面是一些步骤和资源&#xff0c;可以帮助你开始。 1. 学习基础知识 在学习…

LeetCode高频算法刷题记录6

文章目录 1. 编辑距离【困难】1.1 题目描述1.2 解题思路1.3 代码实现 2. 寻找两个正序数组的中位数【困难】2.1 题目描述2.2 解题思路2.3 代码实现 3. 合并区间【中等】3.1 题目描述3.2 解题思路3.3 代码实现 4. 爬楼梯【简单】4.1 题目描述4.2 解题思路4.3 代码实现 5. 排序链…

使用 PAI-Blade 优化 Stable Diffusion 推理流程(二)

背景 上一篇中&#xff0c;我们使用了 PAI-Blade 优化了 diffusers 中 Stable Diffusion 模型。本篇&#xff0c;我们继续介绍使用 PAI-Blade 优化 LoRA 和 Controlnet 的推理流程。相关优化已经同样在 registry.cn-beijing.aliyuncs.com/blade_demo/blade_diffusion镜像中可以…