第5.1章 – c++-流程控制语句(判断语句)

C++程序执行的流程结构可以有三种:顺序、分支和循环。除了最简单的顺序结构是默认的,分支和循环都需要使用专门的“流程控制语句”来定义。

int i = 0;
while (i < 5) {
        int a = i;
        ++i;
    }

这里的while表示一个循环,后面只能跟要循环执行的一条语句;如果我们想写两条语句,就要用花括号括起来,构成“块”。

对于复合语句(块)需要注意:

  • 花括号后面不需要再加分号,块本身就是一条语句;
  • 块内可以声明变量,变量的作用域仅限于块内部;
  • 只有一对花括号、内部没有任何语句的块叫做“空块”,等价于空语句;

if 单分支条件

if语句主要就是判断一个条件是否为真(true),如果为真就执行下面的语句,如果为假则跳过。具体形式可以分为两种:一种是单独一个if,一般称为“单分支”;另一种是if … else …,称为“双分支”。


语法重点:if(条件)后面可以不加花括号,直接写代码,但是需要注意if实际的花括号作用于哪个位置

(1)单分支
单分支是最简单的if用法,判断的条件用小括号括起来跟在if后面,然后是如果条件为真要执行的语句。基本形式为:

if (条件判断)
{
语句
}

如果条件为假,那么这段代码就会被完全跳过。
(2)双分支
双分支就是在if分支的基础上,加了else分支;条件为真就执行if后面的语句,条件为假就执行else后面的语句。基本形势如下:

if (条件判断)
{
语句
}
else
{
语句
}

(3)嵌套分支(多分支)
程序中的分支有可能不只两个,这时就需要对if分支或者else分支再做条件判断和拆分了,这就是“嵌套分支”。

    if ( age >= 18 )
    {
        cout << "欢迎您,成年人!" << endl;
        if (age < 35)
        {
            cout << "加油,年轻人!" << endl;
        }
    }
    else
    {
        cout << "本程序不欢迎未成年人!" << endl;
        if (age >= 12)
        {
            cout << "少年,好好学习!" << endl;
        }
        else
        {
            cout << "小朋友,别玩电脑!" << endl;
        }
    }

嵌套分支如果比较多,代码的可读性会大幅降低。所以还有一种更加简单的嵌套分支写法,那就是if … else if …,具体形式如下:
简单理解就是当条件不成立时,将执行else的语句,这个语句就是第二个if。

if (条件判断1)
语句1
else if (条件判断2)
语句2
else if (条件判断3)
语句3
…
else
语句n

执行树状图:
图片[1]-第5.1章 – c++-流程控制语句(判断语句)-织秋笔记

switch 多分支条件判断

if为单分支条件判断,如果有多个条件需要使用嵌套语句,而switch语句本身就是设置为多条件判断,可以同时判断多个条件选择要执行的分支

图片[2]-第5.1章 – c++-流程控制语句(判断语句)-织秋笔记

switch语法基本形式如下:

swith (表达式){
case 值1:
    语句1
    break;
case 值2:
    语句2
    break;
…
default:
    语句n
    break;
}

注意switch的表达式并不是一个条件判断,而是一个整型的数据,用作后面与case的分支作比较。

而case后面的值,要与switch的表达式比对,所以,它的类型也必须时整型

break就是退出,当这个块里遇到break语句时,他会在这里退出,不再执行这个块,会执行switch这整个块后面的语句。
如果没有break语句,则不会退出,会继续执行其他条件的判断,或者是将整个switch语句执行完毕。

default可以理解为等同于else
就是列出的条件都不满足时,将会执行这里的语句

原文参考:
这里switch后面的括号里是一个表达式,对它求值,然后转换成整数类型跟下面每个case后面的值做比较;如果相等,就进入这个case指定的分支,执行后面的语句,直到swith语句结束或者遇到break退出。需要注意的是:

  • case关键字和后面对应的值,合起来叫做一个“case标签”;case标签必须是一个整型的常量表达式;
  • 任何两个case标签不能相同;
  • break语句的作用是“中断”,会直接跳转到switch语句结构的外面;
  • 如果没有break语句,那么匹配某个case标签之后,程序会从上到下一直执行下去;这会执行多个标签下面的语句,可能发生错误;
  • 如果没有匹配上任何case标签的值,程序会执行default标签后面的语句;default是可选的,表示“默认要执行的操作”。
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容