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
执行树状图:
switch 多分支条件判断
if为单分支条件判断,如果有多个条件需要使用嵌套语句,而switch语句本身就是设置为多条件判断,可以同时判断多个条件选择要执行的分支
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是可选的,表示“默认要执行的操作”。
暂无评论内容