当前位置: 首页 > 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};
// print all elements of vector to console
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循环!

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

在这里插入图片描述

相关文章:

  • Unity3D 大地图分块:分块编辑小AStar地图详解
  • PHP框架之symfony框架
  • 铁路定向声波冲击波智能驱鸟器
  • 红队与蓝队:有何区别?
  • 计算机组成原理---Cache的基本工作原理习题
  • springboot应用cpu飙升的原因排除
  • 移除链表元素-力扣203题
  • 分布式之日志系统平台ELK
  • kubernetes node 节点管理
  • 如何解决跨区域文件传输存在的安全管控问题?
  • K8S-使用SVC域名解决ip不固定导致consul服务注册脏数据异常问题
  • OpenAI新模型发布,免费开放GPT-4o!但只开放一点点...
  • qt基于QGraphicsView的屏幕旋转
  • Spring Boot顶层接口实现类注入项目的方法
  • 【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】线性分类模型损失函数对比
  • css选择器
  • js如何打印object对象
  • Laravel Mix运行时关于es2015报错解决方案
  • react-native 安卓真机环境搭建
  • Vultr 教程目录
  • 从PHP迁移至Golang - 基础篇
  • 记一次和乔布斯合作最难忘的经历
  • 前端设计模式
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 探索 JS 中的模块化
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 函数计算新功能-----支持C#函数
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​渐进式Web应用PWA的未来
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #include<初见C语言之指针(5)>
  • #pragma once与条件编译
  • #考研#计算机文化知识1(局域网及网络互联)
  • #知识分享#笔记#学习方法
  • (1)Android开发优化---------UI优化
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (含答案)C++笔试题你可以答对多少?
  • (七)glDrawArry绘制
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (循环依赖问题)学习spring的第九天
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Redis的秒杀Dome和异步执行
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net和jar包windows服务部署
  • .net连接oracle数据库
  • .php结尾的域名,【php】php正则截取url中域名后的内容