P4 C++ 条件与分支(if)

news2024/10/2 20:38:47

前言

今天我们来看看条件语句,换句话说,也就是 if 语句、if else 和 else if 等等这写语句。

我知道大家基本上已经非常了解 if 语句和所有 C++ 中的分支语句,但我还是鼓励你们继续看完这一讲,这里可能包含一些新东西。我们还会深入一点看它如何在 C++ 中工作,这些对你理解程序如何运行是有一些帮助的。

01 分支语句能干什么

条件语句if 语句、 分支语句,这些都是什么意思呢?

  • 有些时候我们写程序的时候,我们需要对一个特定的条件进行评估,然后根据评估的结果,决定我们想要执行什么代码。
  • 举个例子,假设我们有一个变量 x 等于5,我们希望能够编写代码实现判断 这个变量的值是否确定等于5,这就是 条件语句 的本质,这里的条件就是 x 等于5,在此基础上我们可以进行适当的分支。
  • 这样的话,有两种情况会发生,当我们运行我们写的 if 语句时,有两个过程,首先是对实际 条件语句 的评估,然后是基于这个条语句评估后的分支语句。换句话说,如果条件为真,我们需要跳到我们源代码的某一部分,如果值为假,我们需要跳到我们源代码的另一部分。
  • 当我们开始一个应用程序时,整个应用程序及其所有模块加载到内存中。基本上所有这些指令组成了我们的程序,现在这些指令都存储在内存中,当我们有了条件语句所产生的分支,我们基本上是在告诉电脑,嘿,跳到我们的这部分内存开始吧在那里执行我们的指令。正因为如此在内存和分支之间跳跃,实际的过程会更复杂一点,这里有相当多的东西值得我们探索一下。

记住,if 语句就是在检查一个条件,如果这件事是真的,我们就去执行一组特定的代码

02 if语句例子

我们看一个例子。

先做一些解释。

== 操作符称为 比较运算符,它的作用是比较两边的值是否相等。有点像是一个函数,接受两个参数。它会返回一个布尔值类型的结果。

在整数或者在大多数原始的数据结构中,如果你要检查两个数,比如两个整数是否相等,比较运算符基本上是在获取他们的四个字节的内存,然后比较每个字节,这 2 个整数相等的条件是内存的每一位都必须相同

上面的程序将 x 和 5 比较的结果存储到布尔值的变量 ret中。

我们使用分支语句做点事情。

ret这里可以有两种写法。

// 第一种写法
if(ret)
// 第二种写法
if(ret== true)

这两种写法其实是一个意思,换句话说,在第一种写法中,如果 ret不是 true,这个 if 语句也将不会运行。

然后我们为这个 if 语句写了分支语句,换句话说,就是分支去哪里?条件成立后你想让我运行什么代码?

我们现在已经创建了一个分支,如果 ret为 true,我们打印hello world

03 if语句到底在做什么

那么 if 语句到底在做什么呢?它只是在检查这个数字是不是 0 ,如果它是 0,就不会执行 if 语句,如果它不是 0,它会跳到 if 语句内,这就是为什么这整个式子我们不需要做比较运算之类的事情,因为我们不需要检查它是否等于 1 或者是 0,我们可以直接说这个值是不是不是 0,这就是它所做的。

 对比两段代码,会发现,当ret 等于 5时,返回1,将ret = 6后,返回了0,hello world也打印了

指针变量也是如此

可以看到执行代码后,打印了指针为空,这是因为我们给指针变量p设置为了NULL,也就是空指针,else语句则是和if语句一起的,逻辑上就是如果****,否则***** 

04 else if

#include <iostream>
using namespace std;
int main()
{
   char *p = "hello";
   if(p == "world")
   {
      std::cout<< p<<endl;
   }else if (p == "hello")
   {
      std::cout<< p<<endl;
   }   
   return 0;
}

else if 只会是当 if 语句失败之后才会执行。

其实没有所谓的 else if 语句,只是将两个语句放在一行而已,和我们之前将 if 语句的内容的放在 if 的同一行是一样的。else if 只是一个小聪明而已,也就是说如果上面的 if 失败了,就尝试 else if。同样只有在前面的 if 失败后,才会触发 else 语句,才会去比较 p是不是 hello。就是这样。

我记得当我发现的时候,这让我很吃惊,因为我真的没意识到这一点,我觉得 else if 是关键字组合,但是实际上不是,else if 不是 C++ 的关键字,是先 else,然后再 if 。

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

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

相关文章

什么是搜索相关性?AI如何驱动搜索相关性?

训练数据驱动机器学习&#xff0c;机器学习促进丰富的人机交互体验。在快速迭代的互联网时代&#xff0c;我们不断被各种广告铺盖&#xff0c;甚至经常细思极恐&#xff0c;“天呐&#xff0c;小红书怎么知道我面膜没了。”这都是算法和机器学习的鬼斧神工洞察着用户的搜索意图…

今年嵌入式行情这么差吗?学了三年至今无面?

先不说嵌入式行情&#xff0c;目前来看&#xff0c;我感觉是整体的行情都不太好。 之前郭嘉公布的失业率&#xff0c;后来停止公布了&#xff0c;至于为什么&#xff0c;这里就不说了吧。 此处省略N个字&#xff0c;下面说说我身边的情况&#xff0c;可见一斑。 先说公司裁员 我…

Linux基础命令3

移动&#xff0c;剪切文件 普通文件的移动剪切 现在在这儿 上图中&#xff0c;mv y.x ./tmp的意思&#xff0c;就是将当前路径下的y.x文件进行剪切&#xff0c;然后放到路径为当前路径下的tmp目录文件夹里面 操作完成后可以cd tmp&#xff0c;ls看到y.x文件已经在里面了 现在…

DolphinDB 浙商银行 | 第二期现场培训圆满结束

自 DolphinDB 高级工程师计划开展以来&#xff0c;客户们纷纷响应&#xff0c;除了定期收看我们每周三开设的线上公开课外&#xff0c;也有部分客户报名参加了 “总部工程师培训计划” 。 上周&#xff0c;我们迎来了总部培训的第二期学员&#xff1a;来自浙商银行的4位策略研…

Cookie与Session

文章目录 Cookie的介绍Cookie的由来什么是CookieCookie原理Cookie覆盖浏览器查看Cookie 在Django中操作Cookie设置Cookie查询浏览器携带的Cookie删除Cookie Cookie校验登录session Cookie的介绍 Cookie的由来 首先我们都应该明白HTTP协议是无连接的。 无状态的意思是每次请求…

联想拯救者Lenovo Legion R9000K 2021H(82N6)原装出厂Windows10/Win11系统ISO镜像

链接&#xff1a;https://pan.baidu.com/s/13NkeCXNdV0Ib5eeRnZUeAQ?pwdnlr7 提取码&#xff1a;nlr7 拯救者笔记本电脑原厂WIN系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文…

《数据仓库入门实践》

前言&#xff1a; 1、问什么要写这篇博客&#xff1f; 随着自己在数仓岗位工作的年限增加&#xff0c;对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了哪些内容&#xff1f; 在日常工作中&#xff0c;发现刚接触不久数仓…

故障识别:CNN-BiLSTM-SelfAttention时空特征融合多头自注意力机制的故障识别程序,数据由Excel导入,直接运行!

适用平台&#xff1a;Matlab2023版及以上 本程序参考中文EI期刊《基于CNN-BiLSTM 的滚动轴承变工况故障诊断方法法》&#xff0c;程序注释清晰&#xff0c;干货满满&#xff0c;下面对文章和程序做简要介绍。 在CNN-BiLSTM-SelfAttention故障识别模型中&#xff0c;结合了卷积…

Vue中的$nextTick

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue中的$nextTick 目录 &#x1f40b;Vue中的$nextTick有什么作用&#xff1f; &#x1f40b;一、…

易点易动设备管理系统:提升企业设备维修效率的工具

在现代企业运营中&#xff0c;设备的正常运行和及时维修至关重要。然而&#xff0c;传统的设备维修管理方法往往效率低下、易出错&#xff0c;给企业带来了不小的困扰。为了解决这一问题&#xff0c;易点易动设备管理系统应运而生。作为一款先进的智能化系统&#xff0c;易点易…

绝地求生:PUBG全新强化比赛验证系统即将上线,外挂的末日要来了?

就在之前官博发布了一则公告 将在未来的更新中上线强化版的比赛验证系统 具体的变更内容为&#xff1a;从原本的SMS验证&#xff08;短信验证&#xff09;变成了ARS验证&#xff08;语音验证码验证&#xff09;。看起来好像跟原本的验证方式没有太大区别。不过很多黑号他们是没…

3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)

文章目录 WebSocket 的由来WebSocket 是什么WebSocket 优缺点优点缺点 WebSocket 适用场景主流浏览器对 WebSocket 的兼容性WebSocket 通信过程以及原理建立连接具体过程示例Sec-WebSocket-KeySec-WebSocket-Extensions 数据通信数据帧帧头&#xff08;Frame Header&#xff09…

Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案自己写的HLS图像缩放方案 3、设计思路详解Video Processing Subsystem 介绍 4、工程代码详解PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项…

MEMS制造的基本工艺——晶圆键合工艺

晶圆键合是一种晶圆级封装技术&#xff0c;用于制造微机电系统 (MEMS)、纳米机电系统 (NEMS)、微电子学和光电子学&#xff0c;确保机械稳定和气密密封。用于 MEMS/NEMS 的晶圆直径范围为 100 毫米至 200 毫米&#xff08;4 英寸至 8 英寸&#xff09;&#xff0c;用于生产微电…

wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie,C#后台执行js

目录 框架信息&#xff1a;MainWindow.xamlMainWindow.xaml.cs爬取逻辑模拟登录拦截请求Cookie获取 CookieVisitorHandle 框架信息&#xff1a; CefSharp.OffScreen.NETCore 119.1.20 MainWindow.xaml <Window x:Class"Wpf_CHZC_Img_Identy_ApiDataGet.MainWindow&qu…

NX二次开发UF_CAM_set_clear_plane_status 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_status Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_status(tag_t object_tag, UF_PARAM_clrplane_status_t status ) overview 概述 Set th…

安防视频EasyCVR平台太阳能供电+4G摄像头视频监控方案的建设

在工地、光伏、风电站、水库河道等场景中&#xff0c;以及一些偏远地区的项目现场&#xff0c;会存在无网无电情况&#xff0c;大大制约了视频监控系统建设的效率及可行性。在这种场景中&#xff0c;我们也可以通过太阳能供电4G监控摄像机的方案&#xff0c;满足偏远地区无网无…

【Vue】Node.js的下载安装与配置

目录 一.下载安装 官网&#xff1a; 二.环境变量的配置 三.设置全局路径和缓存路径 四.配置淘宝镜像 五.查看配置 六.使用npm安装cnpm ​ 一.下载安装 官网&#xff1a; https://nodejs.org/en/download 下载完之后&#xff0c;安装的时候一直点next即可&#xff0c…

Nginx配置文件中的关键字是什么?详细解释来了

点击上方蓝字关注我 Nginx 是一款高性能的 Web 服务器软件&#xff0c;同时也是一款反向代理服务器软件。Nginx 的配置文件通常是 /etc/nginx/nginx.conf&#xff0c;以下是一个典型的配置文件&#xff0c;并对其中的关键字进行详细解释。 1. 配置文件 perlCopy codeuser ngin…

python爬虫教程:selenium常用API用法和浏览器控制

文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数&#xff0c;包括元素定位、很多API方法均发生变化&#xff0c;本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…