【Essential C++ 学习笔记】第一章 基础编程 - 控制语句
【Essential C++ 学习笔记】第一章 基础编程 - 控制语句
JokerHuang 发表于1年前
【Essential C++ 学习笔记】第一章 基础编程 - 控制语句
  • 发表于 1年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 控制语句即用来实现对程序流程的选择、循环、转向和返回等进行控制。涉及知识 if、else、else if、while、do、switch、break、continue等。

本章导航

初识 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,不过我觉得也没人会转...

共有 人打赏支持
粉丝 4
博文 6
码字总数 7272
×
JokerHuang
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: