文档章节

【Essential C++ 学习笔记】第一章 基础编程 - 控制语句

JokerHuang
 JokerHuang
发布于 2016/08/16 22:04
字数 1665
阅读 3
收藏 0

本章导航

初识 C++

运算符

控制语句

数组和向量

初识指针

文件的读写


条件语句

条件语句就是根据一个表达式的真假来判断执行某些语句.

IF 条件语句

IF 基础形式

if 条件语句分为两个部分: 第一部分是条件部分; 第二部分是代码部分, 代码部分可以用花括号括起来用以执行多行代码, 如果不用花括号则为执行紧邻的单行代码`. 代码演示如下:

if (condition)
    // 这里执行单行代码

if (condition) {
    // 使用花括号可以一次执行多行代码
    // 建议都使用花括号将需要执行的代码括起, 容易理解
}

ELSE 子句

当 if 条件判断为假时, 我们比较习惯去执行另一些代码来进行操作, 这个时候 else 子句就显示了功能.

当 if 判断为 false 时, 执行 else 子句. 代码演示如下:

if (condition) {
    // 这里执行 condition 为 true 时的代码片段
} else {
    // 这里执行为 false 时的代码片段
}

ELSE IF 子句

结合 if 与 else 的实际使用情况, 我们可能对某一个值有多种判断, 这时候 else if 子句就派上用场了, 代码演示如下:

if (jokerHuangValue == 1) {
    // 这里执行 jokerHuangValue 等于 1 的情况时的代码
} else if (jokerHuangValue == 2) {
    // 这里执行 jokerHuangValue 等于 2 的情况时的代码
} else {
    // 这里执行 jokerHuangValue 即不等于 1 也不等于 2 的情况的代码
}

ELSE 悬空问题

刚我们提到说需要执行的代码用花括号括起, 加入我们不这么做就有可能产生else 悬空的问题, 既 if 语句多于 else 子句, 实际的代码演示如下:

if (a == 1)
if (b == 2)
	printf("***\n");
else
	printf("###\n");

这里的 else 到底是谁的子句? 判定的规则为else 附加至最近的 if, 但是我们需要极力避免这种情况的产生, 唯一的办法即是将需要执行的代码用花括号括起.

SWITCH 语句

SWITCH 基础形式

如果需要判断的值属于整形类型, 那么可以使用 SWITCH 语句来代替成堆出现的 IF ELSE 语句.

switch 的使用方式为: 在关键字后紧跟一个小括号括住表达式, 其后是一组 case 关键字标签, 每个标签都与表达式相比较, 如果找到与之对应的 case 标签, 则执行其后的所有代码, 如果没有找到相对应的 case 标签, 则执行 default 子句, 如果没有设置 default 子句则不执行任何代码. 用代码演示如下:

switch (jokerHuangValue) {
    case 1:
        std::cout << "Oops! Nice guess but not quite it." << std::endl;
        break;
    case 2:
        std::cout << "Hmm. Sorry, Wrong a second time." << std::endl;
        break;
    case 3:
        std::cout << "Ah, this is harder than it looks, isn't it?" << std::endl;
        break;
    default:
        std::cout << "It must be getting pretty frustrating by now!" << std::endl;
        break;
}

这里出现了一个关键词break, 作用为跳出当前的代码段, switch 有个需要注意的地方, 当表达式符合某一个 case 子句时, 将会执行其后的所有代码, 包括在其后的其他 case 子句和 default 子句代码! 所以需要使用 break 来提前跳出已经完成的部分. 假设我们不加 break, 此时 jokerHuangValue 的值为 2, 将会有如下输出:

Hmm. Sorry, Wrong a second time.
Ah, this is harder than it looks, isn't it?
It must be getting pretty frustrating by now!

循环语句

WHILE 循环语句

WHILE 基本形式

while 循环语句跟 if 有点类似,在开始阶段对条件表达式求值,如果其值为 true 则紧跟在 while 之后的语句或语句块将会被执行,然后重新计算条件表达式的值,直至条件表达式的值为 false,终止 while 循环。

int jokerHuangValue = 0;

while (jokerHuangValue < 10) {
    std::cout << "value : " << jokerHuangValue << std::endl;
    ++jokerHuangValue;
}

CONTINUE 结束单次循环并重新开始

continue 关键字的作用是终止循环的当前迭代,并重新计算条件表达式。

其作用很明显,当程序满足某一条件时,continue 关键字可以帮助我们停止程序执行后续代码并重新计算调剂表达式的值。演示代码如下:

int jokerHuangValue = 0;

while (jokerHuangValue <= 10) {
    // 跳过 jokerHuangValue 为 6 的情况
    if (jokerHuangValue == 6) {
        continue;
    }

    std::cout << "value : " << jokerHuangValue << std::endl;
    ++jokerHuangValue;
}

BREAK 跳出当前循环

之前已经介绍过 break 关键字的用法,和 switch 一样,在 while 循环中,break 的作用也是跳出当前循环。演示代码如下:

int jokerHuangValue = 0;

while (jokerHuangValue <= 10) {
    // 跳过 jokerHuangValue 为 6 的情况
    if (jokerHuangValue == 6) {
        continue;
    }

    // 当 jokerHuangValue 为 9 的时候,跳出当前循环
    if (jokerHuangValue == 9) {
        break;
    }

    std::cout << "value : " << jokerHuangValue << std::endl;
    ++jokerHuangValue;
}

DO...WHILE... 变型

while 循环语句存在一个变型即 do ... while ... 语句。在 Essential C++ 中并没有提到,但是可以简单了解下。

while 的执行顺序是先判断再执行,而 do ... while ... 的执行顺序是先执行后判断,很容易理解,先执行 do 代码块中的语句,然后再判断是否满足 while 的循环条件,如果满足,再执行一遍 do 中的代码块,以此类推直至不满足 while 循环条件。演示代码如下:

int jokerHuangValue = 0;

// 首先执行 do 中的代码块部分
do {
    std::cout << "value : " << jokerHuangValue << std::endl;
    ++jokerHuangValue;
} while (jokerHuangValue <= 10);

FOR 循环语句

FOR 基本形式

for 循环语句通过三组表达式来循环一个代码块,其表现形式可用如下表达:

for (init-statement ; condition ; expression) {
    // 此处为需要循环执行的代码
}

其中需要注意一下几点

  • init-statement 在代码初始阶段被执行一次,常用来初始化循环索引
  • condition 为循环每次开始前需要计算的表达式,如果 condition 为 false 则代码不执行
  • expression 为单次循环结束后执行的表达式

注意init-statement、condition、expression 都可以留空,分号却不能省略


心得体会

第一次这样写学习笔记,有点不太适应,内容也有点乱糟糟,希望通过学习 Essential C++ 这本书,一来让我对 C++ 有个更好的入门体验,二来也提高下自己的文笔。各位大神如果发现有不对的地方请指正,大家一起学习。如果要转请注明出处来自JokerHuang,不过我觉得也没人会转...

© 著作权归作者所有

共有 人打赏支持
JokerHuang
粉丝 3
博文 6
码字总数 7272
作品 0
苏州
高级程序员
C语言编程学习程序解析:控制语句之while循环语句详解

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/28
0
0
C语言编程学习程序解析:控制语句之goto语句

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/29
0
0
C语言编程入门学习:用C语言输出九九乘法表

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/29
0
0
C语言编程学习程序解析:C循环语句break和continue关键字

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/28
0
0
C语言编程学习程序解析:控制语句之学习前言

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
7分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
20分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
20分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
25分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部