C++03:条件与分支语句

news2024/11/15 18:03:51

2024年1月14日  内容来自The Cherno:C++系列

2024年1月17日  更新内容整理自:
    南京大学 陈佳俊 郑涛  《程序设计教程 用C++语言编程》

------------------------------------------------------------------------------------------------------------------------------

OK,I wish we might learn something deeper and something new.

条件语句、if语句、分支语句

情况:在我们写代码的时候,我们需要评估出现的不同的情况,然后根据评估的情况来决定我们下一步该执行什么代码。

we check a condition,that's our 'if' statement.

     if something is true,

             then we jump to a certain bunch of code

-------------------------------------------------------------------------------

if()语句

    if()中的表达式会与一个布尔值进行比较,这个bool就是ture或者false

(复习一下,计算机中0代表false,其他数字都是true) get that into your head!!!!

False is zero;False is zero;False is zeroooooooooooooooo~~~*^&*^@^&*^

 将x设置为7,在第七行打上断点,然后点击调试,点击步过按钮,看看我们的变量会发生什么

首先,布尔变量Compare的值变成了false,而在调试过程中发现黄色箭头直接跳过了第12行的语句,这说明它没有被执行。so,只有在if()语句括号中的表达式值为真true时,才会执行{}中的内容。

if语句的实质

综上,if(){}语句其实就是在说,嘿,()括号里面的东西是不是0(False?),如果不是0我就会执行{}中的语句。

---------------------------------------------------------------------------------------------------------------------------------

容易混淆的点--plus:对于指针的处理

我们经常需要检查某个指针是否为空:

                            即 if(p!=null)等价于if(p)

                           显然,null的值是0

if(p)就是在问:

                             p是不是空?

                             如果p是空,那么if()中的值=0=false,不会执行下述{}语句

                             如果p非空,那么if()中的值!=0  ()中的值为true,会执行下述语句{

}

//在另一篇关于二叉树的前中后序非递归遍历blog中经常会出现if(p)的简写操作,这也是我一直很晕而且懒得理顺的一个点。

---------------------------------------------------------------------------------------------------------------------------------

switch语句 

if语句提供了根据某个条件是否满足从  2个or2组语句 选其中一个来执行的程序流程控制。

而程序有时需要根据某个整型表达式的值来从  >2个语句  选其中一个来执行,这个时候选择if就显得啰嗦了(因为它要嵌套很多层)

例题1:

     从键盘输入一周的某一天(0:周天,1:周一,....6:周六),然后输出其对应的英语单词

     假设用一下if来实现,程序如下:

为了解决上述if语句书写麻烦的问题,C++提供了一条多路选择语句,即switch语句(又称开关语句,想象一下你们教室里那一排电闸,又或者多臂老虎机),它能根据某个整型表达式的值在多组语句中选择一组语句来执行,switch格式如下。

格式:

   switch(<整型表达式>)

{

case <整型表达式1>:<语句序列1>

case <整型表达式2>:<语句序列2>

....

case <整型表达式n>:<语句序列n>

default:<语句序列n+1>

}

执行过程:

首先计算(<整型表达式>)的值,然后判断是否存在与之相等的case <整型表达式i>,如果存在,则执行该分支中的<语句序列i>;否则如果有default分支,则执行default后面的default:<语句序列n+1>

在执行某个语句i时,如果遇到break ,就结束该分支的执行。

在学习完switch之后,再次尝试例题1:

若干个分支操作相同的情况

switch中如果有若干个分支操作相同的情况,可以把这些分支写在一起,相同的操作只写1次。

例题:计算某年某月的天数

  已知,1 3 5 7 8 10 腊,31天永不差;剩下4,6,9,11,每个月都是30天;而2月份在闰年是29天,不是闰年为28天;已知闰年的判断条件是该年份是不是4的倍数且不是100的倍数,可是400的倍数。

示例代码如下:注意下面的case是怎么写的!

 

注意一点:

   C++的多路选择语句与其他语言的多路选择语句不同,在其他语言中的多路选择语句,一个分支执行完之后将会自动结束整个选择语句,而C++的switch语句在一个分支的执行中如果没有break语句,则C++会紧接着执行下一个分支。

例如,分支1具有功能A,B,C;分支2具有功能B,C;分支3具有功能C,则可以写成这样:

 switch(<整型表达式>)

{

case <整型表达式1>:A

case <整型表达式2>:B

case <整型表达式3>:C

//细节:这里不写break,意味着满足表达式1时会依次执行ABC,满足表达式2时会依次执行BC..

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1397421.html

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

相关文章

Java和SpringBoot学习路线图

看了一下油管博主Amigoscode的相关视频&#xff0c;提到了Java和SpringBoot的学习路线&#xff0c;相关视频地址为&#xff1a; How To Master Java - Java for Beginners RoadmapSpring Boot Roadmap - How To Master Spring Boot 如下图所示&#xff1a; 当然关于Java和Spr…

【声光语音告警】小机房-动环系统与服务器监控二合一告警方案

目前场景及存在的问题 目前有很多小规模机房&#xff0c;服务器数量不多&#xff0c;机房面积也较小&#xff0c;例如医院、车站、博物馆、学校、工厂等环境。机房虽小&#xff0c;但仍然需要进行服务器性能监控以及机房动力环境监控&#xff0c;例如漏水、温湿度、烟感、电压…

ChatGPT企业版跟个人版有什么区别?

ChatGPT企业版&#xff08;ChatGPT Enterprise&#xff09;除了有和个人版GPT一样的功能外&#xff0c;企业版还可提供企业级的安全和隐私、以及数据分析功能。 订阅实用可以看下这篇文章&#xff1a; ChatGPT企业版的区别是&#xff0c;企业版允许客户输入公司的数据&#xf…

6.4.2转换文件

6.4.2转换文件 利用Swf2VideoConverter2可以很方便地将Flash动画(*.swf)转换为其它的视频格式。 1&#xff0e;单击“添加”按钮&#xff0c;在弹出的下拉菜单中选择“添加文件”&#xff0c;在弹出的“Open Swf Files(打开Swf文件)”窗口中选择swf文件(如&#xff1a;那些花…

拉索回归(Lasso Regression)的原理是什么?

拉索回归&#xff08;Lasso Regression&#xff09;&#xff0c;全称Least Absolute Shrinkage and Selection Operator回归&#xff0c;是一种线性回归的改进方法&#xff0c;主要用于数据分析和特征选择。其核心原理是在传统的线性回归损失函数中加入了一个L1正则化项&#x…

Javaweb超详细实现模拟支付宝扫码支付

1.普通方式创建Javaweb项目 首先创建Java项目 2.创建好的项目添加web框架支持 如图选择确定 在项目结构中配置有关信息 右键创建classes文件夹与lib文件夹 如图 此处找到刚才的项目的classes路径设置 在依赖中设置lib路径的设置 找到刚才的lib路径 选择此选项 结束项目结构中模…

web蓝桥杯真题--10、灯的颜色变化

介绍 我们经常会看到各种颜色的灯光&#xff0c;本题我们将实现一个颜色会变化的灯的效果。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── effect.gif ├── images │ ├── greenlight.svg │ ├── l…

初识SpringBoot

SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,简单来说就是SpringBoot其实不是什么新的框架&#xff0c;它默认配置了很多框架的使用方式&#xff0c;就像maven整合了所有的jar包&#xff0c;spring boot整合了所有的框架 。 创建的包一定要在项目主程序入口…

MATLAB - 计算机械臂关节扭矩以平衡末端力和力矩

系列文章目录 前言 产生力矩以平衡作用在平面机器人末端执行器体上的端点力。要使用各种方法计算关节力矩&#xff0c;请使用刚体树机器人模型的几何雅各比&#xff08;geometricJacobian&#xff09;和反动力学&#xff08;inverseDynamics&#xff09;对象函数。 一、初始化…

JavaScript的代码执行顺序

&#xff08;1&#xff09;. js的执行顺序&#xff0c;先同步后异步 &#xff08;2&#xff09;. 异步中任务队列的执行顺序&#xff1a; 先微任务microtask队列&#xff0c;再宏任务macrotask队列 注意&#xff0c;按顺序从上到下时&#xff0c;没有轮到执行的任务会进入相应…

PowerScale重磅升级,加速迈进AI时代

2024开年 给大伙报告一则好消息 Dell非结构化数据存储的扛把子 PowerScale迎来重大升级 第二代PowerScale全闪存系统 即将闪亮登场 此次升级主要涉及硬件、软件及与NVIDIA的合作关系三个方面&#xff0c;升级后的PowerScale有望成为第一个通过 NVIDIA DGX SuperPOD验证的以…

Linux———sort命令总结详解(狠狠爱住)

目录 sort命令&#xff1a; 命令参数及描述&#xff1a; 示例&#xff1a; 使用-b参数&#xff0c;忽略行首空白字符&#xff0c;按照第一列进行排序&#xff1a; -d 选项是 sort 命令中一个非常有用的选项&#xff0c;它可以按照字典顺序进行排序&#xff0c;同时忽略非字…

创业前先把刘强东这两句琢磨明白!不然大概率失败!2024最适合创业的行业!2024年普通人的创业机会在哪里

第一句&#xff0c;真正解决一个问题。 这句话表达了&#xff0c;你的项目一定是要建立在解决具体的问题上&#xff0c;而不是你觉得自己有个好点子&#xff0c;或者好产品就可以了。因为即使你的产品很好&#xff0c;服务很好&#xff0c;如果不能切实的解决某个问题&#xf…

渐开线齿轮计算软件开发Python

从0开始开发计算软件&#xff0c;欢迎大家加入 源代码仓库

【C++】std::string 转换成非const类型 char* 的三种方法记录

std::string 有两个方法&#xff1a;data() 和 c_str()&#xff0c;都是返回该字符串的const char类型&#xff0c;那如何转换成非const的char呢&#xff1f; 下面展示三种方法&#xff1a; 强转&#xff1a;char* char_test (char*)test.c_str();使用string的地址&#xff…

Android 查看 md5

网上看了一大批文章老实说 百分之80的都是垃圾 , 都没有说明白怎么看 keytool -list -v -keyst xxx.jks 在自己的项目中 , terminal 输入上面命令 跟本就没有用看不到 md5 很多的文章让你找 signingReport , 但是你查看 自己的目录可能压根就没有这个 自己直接用手敲就可以…

分布式事务Seata实战-AT模式(注册中心为Eureka)

大致记录Seata的AT模式下创建项目过程中需要注意的点和可能遇到的问题。 本项目是以官网的给的示例&#xff08;即下图&#xff09;进行创建的&#xff0c;以Eureka为注册中心。 官网&#xff1a;Seata AT 模式 | Apache Seata™ 官方代码示例&#xff1a; 快速启动 | Apac…

JRT打印报告示例

借助JRT实现的打印客户端和打印元素绘制协议及表格元素&#xff0c;设计器基本成型&#xff0c;这次可以试着写一个用模板控制布局的打印报告示例了&#xff0c;测试点报告表格维护、打印标签、打印数据、打印条码、打印图片、打印表格。基于新架构的代码比M写打印简单多了&…

AGI即将出现,未来最重要的资源是算力和能源

丨划重点 ① 关于新模型的名字&#xff0c;奥特曼还没有明确的想法&#xff0c;但他称不喜欢像“iPhone 27”这样的命名方式。 ② 奥特曼认为AGI将在不久的将来出现&#xff0c;但对社会和工作的影响程度可能远低于预期。 ③ 奥特曼表示&#xff0c;尽管AI的潜力超过预期&#…

数据结构day1

1.思维导图 2.定义一个简单宏或宏函数&#xff0c;实现两个数交换。 3.定义字符类型指针&#xff0c;指针指向n个连续堆区内存&#xff0c;输入&#xff0c;计算字符串长度 定义函数&#xff0c;实现内存申请 定义函数&#xff0c;解释字符串长度 定义函数&#xff0c;释放内…