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

news2024/12/25 13:09:25

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.coloradmin.cn/o/562420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

Doo Prime 德璞资本:期货开户条件全解析!让你不再困惑!

期货市场是金融市场中一个非常重要的部分&#xff0c;对于许多投资者来说&#xff0c;期货市场是一个非常有吸引力的投资选择。然而&#xff0c;要进行期货交易&#xff0c;必须首先开设期货账户&#xff0c;这就需要满足一些期货开户条件&#xff0c;因此本文将介绍期货开户条…

认识SpringCloud(一) 注册中心Eureka

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。在传统的rpc远程调用框架中&#xff0c;管理每个服务与服务之间依赖关系比较复杂&#xff0c;管理比较复杂&#xff0c;所以需要使用服务治理&#xff0c;管理服务于服务之间依赖关系&#xff0c;可以实现服…

(原创)getX+Dio实现Flutter悬浮置顶的页面效果

前言 Flutter的开发相对已经比较成熟了&#xff0c;现在市面上不少商业应用也在使用这个技术 老实说&#xff0c;Flutter去实现一些基础的ui界面&#xff0c;效率还是很高的 当然前提是你对它要有一定的了解。 今天就演示一下&#xff0c;如何去实现一个基础悬浮置顶的页面效果…

OSTrack 中的边界框回归策略

目录 一、裁剪和标签的设置 二、模型的预测输出的边界框回归 一、裁剪和标签的设置 1、添加偏移量&#xff0c;得到偏移后的边界框 jittered_anno [self._get_jittered_box(a, s) for a in data[s _anno]] 2、以偏移后的边界框为中心&#xff0c;进行裁剪 首先以偏移边界…

Apache Pulsar入门指南

1.概述 Apache Pulsar 是灵活的发布-订阅消息系统&#xff08;Flexible Pub/Sub messaging&#xff09;&#xff0c;采用计算与存储分离的架构。雅虎在 2013 年开始开发 Pulsar &#xff0c;于 2016 年首次开源&#xff0c;目前是 Apache 软件基金会的顶级项目。Pulsar 具有支…

面试官:写一个单例模式

1. 什么是单例模式 了解单例模式之前&#xff0c;我们需要先了解什么是设计模式。 设计模式是一种抽象的编程思想&#xff0c;不局限于编程语言&#xff0c;简单来说&#xff0c;就是一些大佬程序猿针对一些典型的场景&#xff0c;给出一些典型的解决方案&#xff0c;只要按照这…

04-CSS3-渐变色、2D转换、3D转换

一、渐变色 CSS渐变色&#xff08;Gradient&#xff09;是指在元素背景中使用两种或多种不同的颜色进行过渡&#xff0c;超过两个颜色可以形成更为细腻的渐变效果。常见的CSS渐变色有线性渐变和径向渐变。 1. 线性渐变&#xff1a;Linear Gradients 向下/向上/向左/向右/对角…

SVN 修改URL路径-使用重新定位(relocate)命令和找不到问题解决

当svn服务器url发生变更,又不想在本地重新进行checkout操作,这时候可以使用svn relocate命令进行url的重新定位; 在windows下以TortoiseSVN为例,在仓库文件夹上右键,TortoiseSVN-(重新定位)relocate, 1、Windows TortoiseSVN客户端: 在工作复本的根目录上右键->TortoiseSV…

DOUBLETROUBLE: 1

文章目录 DOUBLETROUBLE: 1实战演练一、前期准备1、相关信息 二、信息收集1、nmap探测目标靶机端口2、扫描目标网址目录3、访问网站&#xff0c;发现secret下有个图片4、将图片下载5、查看图片所含内容6、破解密码并查看7、登陆邮箱8、创建反弹shell9、上传反弹shell10、监听11…

Jeecg-Boot 未授权SQL注入漏洞(CVE-2023-1454)

本文转载于&#xff1a;https://blog.csdn.net/qq_27536045/article/details/129944987 环境搭建 JDK: 1.8 (小于11) Maven: 3.5 MySql: 5.7 Redis: 3.2 Node Js: 10.0 Npm: 5.6.0 Yarn: 1.21.1 下载源码 后端源码 https://github.com/jeecgboot/jeecg-boot/tree/v…

MongoDB安装教程—Ubuntu

为啥用MongoDB&#xff0c;问就是客户要求。 为啥用Ubuntu&#xff0c;问就是客户只有Ubuntu的机器。 0. 环境 操作系统&#xff1a; Ubuntu 22.04.1 LTS (GNU/Linux 5.19.0-41-generic x86_64) 不同版本系统差异不同&#xff0c;其他版本系统未测试。 1. 安装 1.1 包管理公…

深入探索SDL游戏开发

前言 欢迎来到小K的SDL专栏第二小节&#xff0c;本节将为大家带来基本窗口构成、渲染器、基本图形绘制、贴图、事件处理等的详细讲解&#xff0c;看完后希望对你有收获 文章目录 前言一、简单窗口二、渲染器三、基本图形绘制1、点2、线3、矩形4、圆和椭圆 四、贴图五、事件处理…

XR交互技术趋势:6DoF追踪、手势识别、眼动跟踪……

XR交互技术提供了用户与虚拟环境进行交互的方式和手段&#xff0c;而实时云渲染则提供了真三维、可交互、高沉浸的图形渲染和计算能力。结合这两者&#xff0c;用户可以通过XR设备获得更真实、更沉浸的虚拟体验&#xff0c;同时享受到优质的图形效果和流畅的交互响应。本篇文章…

关于开发中对端口(port)的几点理解

一、服务端的端口是固定的&#xff0c;客户端的端口是随机的 客户端端口是随机的&#xff0c;比如访问百度&#xff0c;系统为浏览器分配了个端口1024。过一会重开电脑&#xff0c;访问了新浪&#xff0c;可能还是用1024端口&#xff0c;我不关浏览器&#xff0c;还要再开一个浏…

CenterFusion数据处理函数__getitem__()解析

CenterFusion数据处理函数__getitem__解析 1. 图像数据处理1.1 通过利用nuScence_COCO实例化对象获取图像以及相关数据的信息1.2 获取图像数据增强的相关参数&#xff1a;中心点c&#xff0c;尺度scale&#xff0c;旋转rotia和翻转flip1.3 根据生成的参数生成仿射矩阵来对图像进…

spring boot 集成 swagger3

Swagger 3是一种开源的API描述工具&#xff0c;它可以帮助开发人员设计、构建、文档化和测试API。Swagger 3支持多种编程语言和框架&#xff0c;包括Java、Node.js、Python、Ruby等&#xff0c;并提供了许多集成工具和插件&#xff0c;例如Postman、Apigee等。 Swagger 3使用Op…

北京君正应用案例:双镜头双画面乔安枪球联动摄像头

你是否遇到过这种问题&#xff1f; 既要看店铺又要看柜台 既要看车又要看大门 雷龙发展提供原厂技术支持&#xff0c;并提供君正集成电路完整解决方案&#xff0c;大大降低你的开发难度及开发时间。 单镜头摄像头一台不够广 出现监控盲区&#xff0c;让小偷有可趁之机 只能装两…

sql语句---left join or right join

1068. 产品销售分析 I 销售表 Sales&#xff1a; -------------------- | Column Name | Type | -------------------- | sale_id | int | | product_id | int | | year | int | | quantity | int | | price | int | -------------------- (s…

JS文字转语音技术实现

前言 最近在做排队叫号系统&#xff0c;涉及到文字转语音播报&#xff0c;因此总结了几种前端文字转语音发声的方法。 一、Web Speech API h5新提供的一个原生语音识别技术的API&#xff0c;可以将文本转成语音并播放。 作为官方的api&#xff0c;实现的效果是比较符合理想的…