- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 选择和决策
作决策是任何一种计算机编程的基础。如果不能根据比较数据值的结果来改变程序中指令的执行顺序,就不能用计算机程序解决大多数问题。
本章将探讨如何在C++程序中作出选择和决策。这将允许检查程序输入的有效性,编写出根据输入数据来执行相应动作的程序。程序应可以解决基于逻辑的问题。
本章主要内容
如何比较数据值
如何根据结果修改程序的执行顺序
逻辑运算符和逻辑表达式的概念以及用法
如何处理多个选择
4.1 比较数据值
要作出决策,需要一种比较机制,而比较有几种类型。像“如果交通信号灯是红色,就停车”这样的决策就涉及到相等比较。在这种情况下,需要比较信号灯的颜色和参考颜色(即红色),如果它们相同,就停车。另一方面,像“如果车速超过极限值,就减速”这样的决策涉及到另一种关系:检查车速是否大于当前的速度极限值。这两种比较是类似的,因为它们都会得到下面两个值中的一个:真或假。这就是C++中的比较过程。
使用一些运算符就可以比较数据值,这些运算符称为关系运算符。用于比较两个值的有6个基本运算符,如表4-1所示。
表4-1 关系运算符
关系运算符 说 明 关系运算符 说 明 小于 = 小于等于 大于 = 大于等于 == 等于 != 不等于 注释:
其中的“等于”比较运算符(==)是两个连续的等号,它不同于只包含一个等号的赋值运算符(=)。在进行相等比较时,常常容易犯只使用一个等号的错误。对此,编译器一般不会发出错误消息,因为表达式可能是有效的,只是不能得出我们希望的结果。所以用户需要非常小心,避免出现这种错误。
这些二元运算符都是比较两个值,如果比较是真,就返回true,否则就返回false。值true和false是C++中的关键字,也是一种新的字面量,称为布尔字面量(以布尔代数之父George Boole的名字命名),其类型是bool。
如果把值true强制转换为整数类型,结果就是1,如果把值false强制转换为整数类型,结果就是0。还可以把数值强制转换为bool类型。0会强制转换为false,其他非0值则强制转换为true。
与其他标准类型一样,也可以创建bool类型的变量,来存储布尔值。声明该变量的方法与声明其他类型的变量一样,例如:
bool decision = true; //Declare, define and initialize a logical variable
这个语句把变量decision声明并定义为布尔类型,还给它赋予初始值true。
4.1.1 应用比较运算符
下面介绍几个使用比较运算符的例子,说明其工作原理。假定有两个整数变量i和j,其值分别是10和–5。在下面的逻辑表达式中使用它们:
i j i!=jj –8i = j + 15
这些表达式都等于true。注意在最后一个表达式i = j + 15中,相加运算j + 15要先执行,因为+的优先级高于=的优先级。可以在bool类型的变量中存储这些表达式的结果。例如:
decision = i j; //true if i is greater than j, false otherwise
如果i大于j,就在bool变量decision中存储true,否则就存储false。
也可以比较char类型的变量。假定定义了下面的变量:
char first = A;
char last = z;
现在编写使用这些变量的比较示例,如下所示:
first lastE = firstfirst != last
第一个表达式检查first的值A是否小于last的值z,这总是true。参考附录A中这些字符的ASCII编码,就可以验证这一点。大写字母用一组递增的数值65~90来表示,65表示A,90表示Z。第二个表达式的结果为false,因为E大于first的值。最后一个表达式是true,因为A肯定不等于z。
输出bool值与输出其他类型的值一样简单,下面举一个例子。
程序示例4.1—— 比较数据值
这个例子从键盘上读取两个char值,输出比较它们的结果:
//Program 4.1 Comparing data values
#include iostream
using std::cin;
using std::cout;
using std::endl;
int main() {
char first = 0;//Stores the first character
char second = 0;//Stores the second character
//Prompt for and read in the first character
coutEnter a character:;
cin fi
文档评论(0)