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循环!

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024下《网络工程师》50个高频考点汇总,背就有效!

宝子们&#xff01;上半年软考已经结束一段时间了&#xff0c;准备考下半年软考中级-网络工程师的小伙伴们可以开始准备了&#xff0c;这里给大家整理了50个高频考点&#xff0c;涵盖全书90%以上重点&#xff0c;先把这个存下&#xff01;再慢慢看书&#xff0c;边看书边背这个…

示例:WPF中如何不卡顿页面的情况加载大量数据

一、目的&#xff1a;在开发过程中经常会遇到一个ListBox列表里面需要加载大量数据&#xff0c;但是加载过程中会假死卡顿影响用户体验&#xff0c;或者是你的主页面加载了大量控件&#xff0c;或者切换到一个有大量元素的页面都会有这种体验&#xff0c;因为加载的都是UI元素不…

工程打包与运行

黑马程序员Spring Boot2 文章目录 先点击cean&#xff0c;确保打包之前是个干净的环境点击package进行打包&#xff0c;打包成功之后可以看到target文件夹下的文件 到项目目录下使用终端打开&#xff0c;并使用以下命令运行打包好的程序 如果遇到没有主清单属性的问题&#xff…

【Unity】RPG2D龙城纷争(三)角色、角色数据集

更新日期&#xff1a;2024年6月18日。 项目源码&#xff1a;后续章节发布 索引 简介角色数据集&#xff08;RoleDataSet&#xff09;一、定义角色数据集类二、角色基础数据&#xff08;公共数据&#xff09; 角色&#xff08;Role&#xff09;一、定义角色类二、角色其他数据&a…

警惕!新增4本SCI/SSCI被剔除!6月WOS更新(附下载)

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

【UE数字孪生学习笔记】 Apifox一体化接口测试平台

声明&#xff1a;部分内容来自于b站&#xff0c;知乎&#xff0c;慕课&#xff0c;公开课等的课件&#xff0c;仅供学习使用。如有问题&#xff0c;请联系删除。 部分内容来自UE官方文档&#xff0c;博客等 Apifox接口测试 Apifox 是集 API 文档、API 调试、API Mock、API 自动…

深度学习(十二)——神经网络:搭建小实战和Sequential的使用

一、torch.nn.Sequential代码栗子 官方文档&#xff1a;Sequential — PyTorch 2.0 documentation # Using Sequential to create a small model. When model is run, # input will first be passed to Conv2d(1,20,5). The output of # Conv2d(1,20,5) will be used as the in…

【unity笔记】二、海洋系统Crest Ocean System插件使用

一、介绍 Crest 是 Unity 技术先进的海洋系统。 它专为性能而设计&#xff0c;并大量使用细节级别 &#xff08;LOD&#xff09; 策略和 GPU 加速来实现快速更新和渲染。它还具有高度的灵活性&#xff0c;允许对水形状/泡沫/动态波浪/等进行任何自定义输入&#xff0c;并具有直…

基于Matlab的人脸表情识别系统(GUI界面)【W5】

简介&#xff1a; 该系统是一个基于Matlab开发的人脸表情识别应用程序&#xff0c;旨在识别输入图像中的人脸表情&#xff0c;并通过直观的图形用户界面&#xff08;GUI&#xff09;向用户展示识别结果。系统结合了图像处理、机器学习和用户交互技术&#xff0c;使用户能够轻松…

(论文翻译)ViM Out-Of-Distribution with Virtual-logit Matching(CVPR2022)

ViM: Out-Of-Distribution with Virtual-logit Matching&#xff08;CVPR2022&#xff09; 文章目录 ViM: Out-Of-Distribution with Virtual-logit Matching&#xff08;CVPR2022&#xff09;Abstract1.Introduction2.Related Work3.Motivation: The Missing Info in Logits4.…

SUSE linux的快照和恢复

snapper用于创建和管理文件系统快照&#xff0c;并在需要时实现回滚&#xff0c;它还可以用于创建用户数据的磁盘备份。snapper使用btrfs文件系统或者精简配置的被格式化成XFS或EXT4的LVM卷。snapper可以通过命令行或YaST来进行管理。 btrfs是一种copy-on-write文件系统&#x…

Linux网络命令:网络速度测试工具 speedtest-cli 详解

目录 一、概述 二、安装 speedtest-cli 1、在基于 Debian 的系统上安装 2、在基于 Red Hat 的系统上安装 三、命令语法 1、基本命令语法 2、查看帮助 3、常用选项 四、 speedtest-cli使用示例 1. 基本测试 2. 列出所有可用的服务器 3. 指定服务器进行测试 …

kotlin集合框架

1、集合框架的接口类型对比 2、不可变和可变List fun main() {// 不可变List - 不能删除或添加元素val intList: List<Int> listOf(1,2,3)intList.forEach{println(it) // 1 2 3}println("")// 可变List - 可以删除或添加元素val mutableList mutableListO…

【SpringBoot】RSA加密(非对称加密)

一、关于RSA RSA是一种非对称加密算法&#xff0c;广泛应用于数据加密和数字签名领域。 RSA算法是由罗纳德李维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;在1977年提出的。…

单元测试很难么?

前言 你可能会用单元测试框架&#xff0c;python的unittest、pytest&#xff0c;Java的Junit、testNG等。 那么你会做单元测试么&#xff01;当然了&#xff0c;这有什么难的&#xff1f; test_demo.py def inc(x): return x 1 def test_answer(): assert inc(3) 4 i…

BLE-蓝牙广播

蓝牙广播&#xff1a;

KVB投资安全小知识:你知道情绪面、技术面与基本面的关系吗?

摘要&#xff1a;当涉及到金融市场分析时&#xff0c;情绪面、技术面和基本面是三个重要的方面。它们相互交织&#xff0c;共同影响着市场的走势和投资者的决策。下面我来详细解释它们之间的关系。 情绪面的影响 情绪面指的是投资者情绪和市场情绪&#xff0c;它反映了市场参与…

基于自编码器的滚动轴承异常检测方法(NASA-IMS数据,Python)

代码较为简单。 import numpy as np import pandas as pd from tensorflow import keras from tensorflow.keras import layers from matplotlib import pyplot as plt df_stats_Ch1_test2 pd.read_csv("estadisticos_test2_ch1.csv" , sep ,) X_Ch1 df_stats_Ch…

scratch编程03-反弹球

这篇文章和上一篇文章《scratch3编程02-使用克隆来编写小游戏》类似&#xff08;已经完全掌握了克隆的可以忽略这篇文章&#xff09;&#xff0c;两篇文章都使用到了克隆来编写一个小游戏&#xff0c;这篇文章与上篇文章不同的是&#xff0c;本体在进行克隆操作时&#xff0c;不…

Linux系统安装Ruby语言

Ruby是一种面向对象的脚本语言&#xff0c;由日本的计算机科学家松本行弘设计并开发&#xff0c;Ruby的设计哲学强调程序员的幸福感&#xff0c;致力于简化编程的复杂性&#xff0c;并提供一种既强大又易于使用的工具。其语法简洁优雅&#xff0c;易于阅读和书写&#xff0c;使…