当前位置: 首页 > news >正文

C++初学者指南第一步---7.控制流(基础)

C++初学者指南第一步—7.控制流(基础)

文章目录

  • C++初学者指南第一步---7.控制流(基础)
    • 1.术语:表达式/语句
      • Expressions表达式
      • Statements语句
    • 2.条件分支
    • 3.Switching(切换):基于值的分支
    • 4.三元条件运算符
    • 5.循环迭代
      • 基于范围的循环   C++11
      • for(初始化; 条件; 步骤) {…}
      • while(条件) {…}
      • do {…} while(条件);

1.术语:表达式/语句

Expressions表达式

  • 一系列计算(运算符+操作数)
  • 可能会产生结果

Statements语句

  • 按顺序运行的程序片段
  • 不产生结果
  • 可以包含一个或多个表达式
  • ; 分隔,并按 { } 分组

2.条件分支

if (condition1) {// 如果condition1为真true,则执行这里的代码
}
else if (condition2) {// condition1为假false,如果condition2为真则执行这里的代码
}
else {// 否则执行这里的代码(即condition1和condition2都为假false)
}
  • 根据条件的结果执行(不执行)代码
  • 条件表达式的结果必须(可转换为)布尔值
  • 条件将从上到下进行检查
if (true)  { cout << "yes\n"; }  // yes
if (false) { cout << "yes\n"; }  // –
if (23)    { cout << "yes\n"; }  // yes (23 → true)
if (0)     { cout << "yes\n"; }  // – (0 → false)
int i = 0;
cin >> i;
if (i < 0) { cout << "negative\n"; 
} else if (i == 0) {cout << "zero\n"; 
} else {cout << "positive\n"; 
}

C++17标准增加的语法

if (语句; 条件) { ... }

用于限制临时变量的范围

int i = 0;
std::cin >> i;
if (int x = 2*i; x > 10) { cout << x; }

3.Switching(切换):基于值的分支

  • 整数类型(char、int、long、enums 等)的值
  • 从上到下检查和执行
  • 执行匹配case和下一个break(或结束}之间的所有内容) 注意这句话
int i = 0;
cin >> i;
int m = i % 5;
switch (m) {case 0:   // 如果m等于0,执行这里代码break;case 1:   // 如果m等于1,执行这里代码case 3:   // 如果m等于1或者3,执行这里代码break;default:  // 如果m不等于0、1、3则执行这里代码
}

C++17标准增加的语法

switch (语句; 变量) { ... }

用于限制临时变量的范围

int i = 0;
std::cin >> i;
switch (int k = 2*i; k) {}

4.三元条件运算符

语法:

Result = Condition ? If-Expression : Else-Expression
结果 = 条件 ? 条件为真的结果 : 条件为假的结果
int i = 8;
int j = i > 10 ? 1 : 2;
j = 2
int k = 20;
int l = (k > 10) ? 1 : 2;l = 1
int b = true;
double d = b ? 2.0 : 0.5;
double e = !b ? 2.0 : 0.5;
d =2.0
e = 0.5

5.循环迭代

基于范围的循环   C++11

for( 变量 : 范围 ) {…}

范围 = 具有标准迭代器接口的对象,例如 std::vector

std::vector<int> v {1,2,3,4,5};
// 打印vector所有元素到控制台
for (int x : v)  { std::cout << x << ' '; }

运行上面代码

for(初始化; 条件; 步骤) {…}

// prints 0 1 2 3 4
for (int i = 0; i < 5; ++i) {std::cout << i << ' ';
}

运行上面代码

while(条件) {…}

第一次条件检查:在第一次循环迭代之前

int j = 5;  
while (j < 10) {std::cout << j << ' ';++j;
}

当 j 小于10时,打印:5 6 7 8 9
运行上面代码

do {…} while(条件);

注意最后的分号
第一次检查条件:在第一次循环迭代之后

  • 只有在没有(标准)库函数/算法的情况下才写循环(我们将在后面的章节中了解标准库)!
  • 比起其他类型的循环,更推荐基于范围的循环!(不可能出现索引/条件错误)
  • 只在事先不知道迭代次数的情况下使用(do) while循环!

附上原文地址
如果文章对您有用,请随手点个赞谢谢!^_^

在这里插入图片描述

相关文章:

C++初学者指南第一步---7.控制流(基础)

C初学者指南第一步—7.控制流&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---7.控制流&#xff08;基础&#xff09;1.术语:表达式/语句Expressions表达式Statements语句 2.条件分支3.Switching(切换):基于值的分支4.三元条件运算符5.循环迭代基于范围的循环   C…...

MFC学习--CListCtrl复选框以及选择

如何展示复选框 //LVS_EX_CHECKBOXES每一行的最前面带个复选框//LVS_EX_FULLROWSELECT整行选中//LVS_EX_GRIDLINES网格线//LVS_EX_HEADERDRAGDROP列表头可以拖动m_listctl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES); 全选&#xff0c;全…...

如何与PM探讨项目

我曾在2020年撰写过一篇名为对产品经理的一些思考的文章&#xff0c;紧接着在2021年&#xff0c;我又写了一篇对如何分析项目的思考。在这两篇文章中&#xff0c;我提出了一个核心观点&#xff1a;“船长需要把控所有事情&#xff0c;但最核心的是&#xff1a;需要知道目标是什…...

今年618各云厂商的香港服务器优惠活动汇总

又到了一年618年中钜惠活动时间&#xff0c;2024年各大云服务器厂商都有哪些活动呢&#xff1f;有哪些活动包括香港服务器呢&#xff1f;带着这些问题&#xff0c;小编给大家一一讲解各大知名厂商的618活动有哪些值得关注的地方&#xff0c;如果对你有帮助&#xff0c;欢迎点赞…...

Android平台下VR头显如何低延迟播放4K以上超高分辨率RTSP|RTMP流

技术背景 VR头显需要更高的分辨率以提供更清晰的视觉体验、满足沉浸感的要求、适应透镜放大效应以及适应更广泛的可视角度&#xff0c;超高分辨率的优势如下&#xff1a; 提供更清晰的视觉体验&#xff1a;VR头显的分辨率直接决定了用户所看到的图像的清晰度。更高的分辨率意…...

WHAT - NextJS 系列之 Rendering - Server Components

目录 一、Server Components1.1 Server Components特点使用 1.2 Client Components特点使用 1.3 综合使用示例1.4 小结 二、Server Components 优势三、Streaming 特性3.1 基本介绍和使用Streaming的理解工作原理使用示例服务器端组件客户端组件页面流程解释 3.2 HTTP/1.1和HTT…...

Web项目部署后浏览器刷新返回Nginx的404错误对应解决方案

data: 2024/6/22 16:05:34 周六 limou3434 叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.源头2.排错3.原因4.解…...

视频与音频的交响:探索达摩院VideoLLaMA 2的技术创新

一、简介 文章&#xff1a;https://arxiv.org/abs/2406.07476 代码&#xff1a;https://github.com/DAMO-NLP-SG/VideoLLaMA2 VideoLLaMA 2是由阿里巴巴集团的DAMO Academy团队开发的视频大型语言模型&#xff08;Video-LLM&#xff09;&#xff0c;旨在通过增强空间-时间建模…...

更改ip后还被封是ip质量的原因吗?

不同的代理IP的质量相同&#xff0c;一般来说可以根据以下几个因素来进行判断&#xff1a; 1.可用率 可用率就是提取的这些代理IP中可以正常使用的比率。假如我们无法使用某个代理IP请求目标网站或者请求超时&#xff0c;那么就代表这个代理不可用&#xff0c;一般来说免费代…...

【Oracle】调用HTTP接口

Oracle调用http接口 前情提要1.创建HTTP请求函数2.创建ACL并授予权限3.测试HTTP请求函数其他操作 一点建议参考文档 前情提要 公司唯有oracle被允许访问内外网&#xff0c;因此在oracle中发起HTTP请求。 1.创建HTTP请求函数 CREATE OR REPLACE FUNCTION HTTP_REQUEST(v_url …...

Minillama3->sft训练

GitHub - leeguandong/MiniLLaMA3: llama3的迷你版本,包括了数据,tokenizer,pt的全流程llama3的迷你版本,包括了数据,tokenizer,pt的全流程. Contribute to leeguandong/MiniLLaMA3 development by creating an account on GitHub.https://github.com/leeguandong/MiniLL…...

【教师资格证考试综合素质——法律专项】学生伤害事故处理办法以及未成人犯罪法笔记相关练习题

目录 《学生伤害事故处理办法》 第一章 总 则 第二章 事故与责任 &#xff08;谁有错&#xff0c;谁担责&#xff09; 第三章 事故处理程序 第四章 事故损害的赔偿 第五章 事故责任者的处理 第六章 附 则 《中华人民共和国预防未成人犯罪法》 第一章 总 则 第二章 预…...

Vite: 关于静态资源的处理机制

概述 随着前端技术的飞速发展&#xff0c;项目规模和复杂度不断增加&#xff0c;如何高效地处理静态资源成为了提升开发效率和应用性能的关键Vite&#xff0c;作为新一代前端构建工具&#xff0c;以其轻量级、快速启动和热更新著称&#xff0c;同时也为静态资源的管理和优化提…...

React之useEffect

在React中&#xff0c;useEffect 是一个非常重要的Hook&#xff0c;它用于管理副作用操作。副作用指的是那些不直接与组件渲染相关的操作&#xff0c;例如数据获取、订阅、手动DOM操作等。本文将详细介绍 useEffect 的概念、基础使用、参数说明以及如何清除副作用&#xff0c;并…...

测试辅助工具(抓包工具)的使用3 之 弱网测试

1.为什么要进行弱网测试&#xff1f; 1.带宽1M和带宽100M打开tpshop网站效果一样吗&#xff1f; 2.手机使用2G网络和使用3G网络打开京东的效果一样吗&#xff1f; 弱网环境下&#xff0c;出现丢包、延时软件的处理机制&#xff0c;避免造成用户的流失。 2.如何进行弱网测试&…...

【Redis】基于Redission实现分布式锁(代码实现)

目录 基于Redission实现分布式锁解决商品秒杀超卖的场景&#xff1a; 1.引入依赖&#xff1a; 2.加上redis的配置&#xff1a; 3.添加配置类&#xff1a; 4.编写代码实现&#xff1a; 5.模拟服务器分布式集群的情况&#xff1a; 1.右键点击Copy Configuration 2.点击Modi…...

websocket 安全通信

WebSocket 协议 WebSocket&#xff1a;在 2008 年诞生&#xff0c;2011 年成为国际标准。它允许服务器主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息&#xff0c;实现了真正的双向平等对话。它是一种在单个 TCP 连接上进行全双工通讯的协议&#xff0c;能…...

代码生成技术技术-janino

文章目录 背景简单例子flink 例子 背景 代码生成技术适合在需要动态代码编译的场景中使用。比如大数据计算场景下&#xff0c;经常会要把flink sql 转成实际的执行计划 简单例子 代码是一个string 类型&#xff0c;直接用janino 编译后&#xff0c;就可以得到加载到jvm里的c…...

QT事件处理系统之四:自定义事件的注册及拦截、发送

1、自定义事件的注册 自定义事件对象 自定义的事件类必须继承自QEvent,并且无需指定父类 自定义的事件类必须拥有全局唯一的Type值,使用QEvent::User+value即可。 class MyEvent : public QEvent {public:MyEvent();QString getStr() {...

vs2022 studio控制台出现中文乱码解决

vs2022 studio控制台出现中文乱码解决 问题解决 问题 这里cout中间的中文&#xff0c;但控制台出现的是乱码对此需要进行修改 解决 打开运行的主文件&#xff0c;也就是整个程序的入口&#xff0c;对他另存为 之后点击编码保存 接着将编码保存的格式变为图片对应的这种 记…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...