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

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~~~*^&*^@^&*^

C++03:条件与分支语句_第1张图片

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

C++03:条件与分支语句_第2张图片

首先,布尔变量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来实现,程序如下:

C++03:条件与分支语句_第3张图片

为了解决上述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:C++03:条件与分支语句_第4张图片

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

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

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

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

示例代码如下:注意下面的case是怎么写的!C++03:条件与分支语句_第5张图片

 C++03:条件与分支语句_第6张图片

C++03:条件与分支语句_第7张图片

注意一点:

   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..

}

你可能感兴趣的:(C++自学,c++,开发语言)