首页 理论教育 零基础C++从入门到精通:if语句及运行结果

零基础C++从入门到精通:if语句及运行结果

时间:2023-08-20 理论教育 版权反馈
【摘要】:运行结果如图4.2.1所示:图4.2.1基本if语句if关键字后面跟着用括号框住的条件表达式,其下面跟着的一句语句会在条件满足的时候运行。动手写4.2.4动手写4.2.4展示了一种多于两个分支的if语句的语法。运行结果如图4.2.4所示:图4.2.4嵌套if语句嵌套if语句的时候,我们可以随意组合之前提到过的任何语法,然而else if的语法本质上就是省略了else后面花括号中的嵌套if语句。

零基础C++从入门到精通:if语句及运行结果

if语句是一种基本的条件控制语句,它的语法基本上跟自然语言中的英语一样(If something happens,do something)。if语句的后面还可以选择性地加上else语句(If something happens,do something. Else,do other things)。

动手写4.2.1

动手写4.2.1展示了基本if语句的用法。运行结果如图4.2.1所示:

图4.2.1 基本if语句

if关键字后面跟着用括号框住的条件表达式,其下面跟着的一句语句会在条件满足的时候运行。在示例中,由于一开始时num等于5,因此满足条件num>4,会打印句子。我们也可以再加上else关键字和一个语句,这样第二个语句将会在条件不满足的情况下运行。由于我们后来把num改成了3,条件不满足,因此程序执行else后的语句,打印句子。

由于这样的语法只能在if或else后面添加一个语句,我们还是需要能处理多行语句的语法。

动手写4.2.2

动手写4.2.2展示了带有多行语句的if语句的用法,这与基本if语句的区别就在于它需要使用花括号把条件分支中的语句全都框起来。这是因为在没有花括号的情况下,if只能覆盖一个语句,而不能覆盖多行语句。甚至在大多数时候我们也会在一行语句的前后加上花括号,这是因为在之后添加新语句的时候我们很可能会忘记添加花括号,那样就可能会发生动手写4.2.3中的错误

动手写4.2.3

动手写4.2.3展示了多行语句没有添加花括号的情况。运行结果如图4.2.2所示:

图4.2.2 cnt自增没有按照预期跳过

这段程序的意图是只有在num小于4的时候才自增cnt,但由于没有添加花括号,因此cnt++在有缩进的情况下也被当成了if语句后的普通语句,并在任何情况下都会运行。这段代码实际等价于:

正因为if语句已经结束了,如果在其后面加上else分支,编译器就会报错,这是因为else分支语句必须有与自己成对的if语句才行。

提示(www.xing528.com)

为了增强程序的可读性,我们一般都会在不同场合为语句添加缩进(一般只要看到左花括号就增加缩进,看到右花括号就减少缩进)。缩进在C++中只会被当作空格处理,并不会对语义造成任何影响。

动手写4.2.4

动手写4.2.4展示了一种多于两个分支的if语句的语法。运行结果如图4.2.3所示:

图4.2.3 else if的应用

在示例中,我们通过在else后面再增加一个if...else语句的方法增加了一个条件分支,程序会在num<4不成立的情况下进入下一个条件的判断,直到所有条件都不满足时,程序走进else分支。

上述语法适合同一个数值有多个区间的情形,但有的时候我们也会需要层层递进的条件分支,比如在拨打客服电话的时候,我们要先选择中文还是英文服务,接着选择服务的类别,然后选择具体的服务。这个时候我们就可以在if语句中嵌套if语句。

动手写4.2.5

动手写4.2.5展示了嵌套if语句的应用。运行结果如图4.2.4所示:

图4.2.4 嵌套if语句

嵌套if语句的时候,我们可以随意组合之前提到过的任何语法,然而else if的语法本质上就是省略了else后面花括号中的嵌套if语句。

在使用嵌套if语句的时候我们也要注意花括号的添加,这不仅仅是因为多行语句的问题。现在,我们先来看看下面的这个示例:

动手写4.2.6

动手写4.2.6展示了一种叫作悬垂else(dangling else)的现象,运行结果如图4.2.5所示:

图4.2.5 悬垂else

在示例中,我们可以看到a的值是4,但是程序运行结果却打印了“a小于等于3”。这是因为没有加上适当的花括号,else无法判断自己与哪个if配对,编译器就只能选择最近的if语句进行打印,所以else相当于是挂在了a>5的条件之后,而不是a>3之后。这种情况也再次说明了缩进在C++中对编译毫无影响。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈