C++03:条件与分支语句

发布时间:2024年01月19日

2024年1月14日? 内容来自The Cherno:C++系列

2024年1月17日? 更新内容整理自:
? ? 南京大学 陈佳俊 郑涛? 《程序设计教程 用C++语言编程》

------------------------------------------------------------------------------------------------------------------------------

OK,I wish we?might learn something deeper and something new.

条件语句、if语句、分支语句

情况:在我们写代码的时候,我们需要评估出现的不同的情况,然后根据评估的情况来决定我们下一步该执行什么代码。

we check a condition,that's our 'if' statement.

? ? ?if something is true,

? ? ? ? ? ? ?then we jump to a certain bunch of code

-------------------------------------------------------------------------------

if()语句

? ? if()中的表达式会与一个布尔值进行比较,这个bool就是ture或者false

(复习一下,计算机中0代表false,其他数字都是true) get that into your head!!!!

False is zero;False is zero;False is zeroooooooooooooooo~~~*^&*^@^&*^

?将x设置为7,在第七行打上断点,然后点击调试,点击步过按钮,看看我们的变量会发生什么

首先,布尔变量Compare的值变成了false,而在调试过程中发现黄色箭头直接跳过了第12行的语句,这说明它没有被执行。so,只有在if()语句括号中的表达式值为真true时,才会执行{}中的内容。

if语句的实质

综上,if(){}语句其实就是在说,嘿,()括号里面的东西是不是0(False?),如果不是0我就会执行{}中的语句。

---------------------------------------------------------------------------------------------------------------------------------

容易混淆的点--plus:对于指针的处理

我们经常需要检查某个指针是否为空:

? ? ? ? ? ? ? ? ? ? ? ? ? ? 即 if(p!=null)等价于if(p)

? ? ? ? ? ? ? ? ? ? ? ? ? ?显然,null的值是0

if(p)就是在问:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?p是不是空?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如果p是空,那么if()中的值=0=false,不会执行下述{}语句

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如果p非空,那么if()中的值!=0? ()中的值为true,会执行下述语句{

}

//在另一篇关于二叉树的前中后序非递归遍历blog中经常会出现if(p)的简写操作,这也是我一直很晕而且懒得理顺的一个点。

---------------------------------------------------------------------------------------------------------------------------------

switch语句?

if语句提供了根据某个条件是否满足从? 2个or2组语句 选其中一个来执行的程序流程控制。

而程序有时需要根据某个整型表达式的值来从? >2个语句? 选其中一个来执行,这个时候选择if就显得啰嗦了(因为它要嵌套很多层)

例题1:

? ? ?从键盘输入一周的某一天(0:周天,1:周一,....6:周六),然后输出其对应的英语单词

? ? ?假设用一下if来实现,程序如下:

为了解决上述if语句书写麻烦的问题,C++提供了一条多路选择语句,即switch语句(又称开关语句,想象一下你们教室里那一排电闸,又或者多臂老虎机),它能根据某个整型表达式的值在多组语句中选择一组语句来执行,switch格式如下。

格式:

? ?switch(<整型表达式>)

{

case <整型表达式1>:<语句序列1>

case <整型表达式2>:<语句序列2>

....

case <整型表达式n>:<语句序列n>

default:<语句序列n+1>

}

执行过程:

首先计算(<整型表达式>)的值,然后判断是否存在与之相等的case <整型表达式i>,如果存在,则执行该分支中的<语句序列i>;否则如果有default分支,则执行default后面的default:<语句序列n+1>

在执行某个语句i时,如果遇到break ,就结束该分支的执行。

在学习完switch之后,再次尝试例题1:

若干个分支操作相同的情况

switch中如果有若干个分支操作相同的情况,可以把这些分支写在一起,相同的操作只写1次。

例题:计算某年某月的天数

? 已知,1 3 5 7 8 10 腊,31天永不差;剩下4,6,9,11,每个月都是30天;而2月份在闰年是29天,不是闰年为28天;已知闰年的判断条件是该年份是不是4的倍数且不是100的倍数,可是400的倍数。

示例代码如下:注意下面的case是怎么写的!

?

注意一点:

? ?C++的多路选择语句与其他语言的多路选择语句不同,在其他语言中的多路选择语句,一个分支执行完之后将会自动结束整个选择语句,而C++的switch语句在一个分支的执行中如果没有break语句,则C++会紧接着执行下一个分支。

例如,分支1具有功能A,B,C;分支2具有功能B,C;分支3具有功能C,则可以写成这样:

?switch(<整型表达式>)

{

case <整型表达式1>:A

case <整型表达式2>:B

case <整型表达式3>:C

//细节:这里不写break,意味着满足表达式1时会依次执行ABC,满足表达式2时会依次执行BC..

}

文章来源:https://blog.csdn.net/m0_72979740/article/details/135624230
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。