3.1 比较数据值

2013-10-07 16:06:21 · 作者: · 浏览: 65

第3章 判断和循环

本章要点

如何比较数据值

如何基于比较结果来改变程序的执行序列

如何使用逻辑运算符和表达式

如何处理多选情形

如何在程序中编写并使用循环

3.1  比较数据值

如果不希望作出武断的决定,那么我们需要一种比较机制。这种机制涉及一些新的运算符,即关系运算符。因为计算机中的所有信息最终都表示为数值(第2章中已学习过如何用数字代码来表示字符信息),所以数值比较实际上是所有判断的本质。总共有6个用于比较两个值的基本运算符,如表3-1所示。

表  3-1

小于
<=
小于等于
大于
>=
大于等于
==
等于
!=
不等于


"等于"比较运算符有两个连续的"="号,它与仅由一个"="号组成的赋值运算符不同。以赋值运算符代替"等于"比较运算符是常见的错误,因此务必注意这个潜在的错误根源。

表3-1中的各个运算符都对两个操作数的值进行比较,然后返回一个bool类型值:比较结果为真返回true,为假则返回false。我们看几个简单的比较示例,就能明白这些运算符的工作过程。操作数可以是变量、字面值或表达式。假设已经创建了两个整型变量i和j,二者的值分别是10和-5,那么表达式

  1. > j     i != j     j > -8     i <= j + 15 

都将返回true。

再假设已经定义了下面两个变量:

  1. char first = 'A'last = 'Z'

下面几个比较示例使用了这两个字符变量:

  1. first == 65     first < last     'E' <= first     first != last 

上面4个表达式都涉及ASCII码值的比较。第一个表达式返回true,因为first初始化为'A',而'A'的ASCII码值与十进制数65相等。第二个表达式检查first的值'A'是否小于last的值'Z'。如果在附录B中查看这两个字符的ASCII码,就将注意到大写字母是用65~90的数值升序表示的,即65表示'A',90表示'Z',因此第二个比较表达式同样返回true。第三个表达式返回false,因为'E'大于first的值。最后一个表达式返回true,因为'A'肯定不等于'Z'。

考虑几个稍微复杂些的数值比较示例。下列语句定义了4个变量:

  1. int i = -10, j = 20;  
  2. double x = 1.5, y = -0.25E-10; 

观察下面这些表达式:

  1. -1 < y      j < (10 - i)    2.0*x >= (3 + y) 

可以看出,在比较时可以用结果为数值的表达式作为操作数。如果与第2章的运算符优先表进行核对,就会发现上面的圆括号都不是必需的,但这些圆括号确实有助于使表达式更清楚。第一个表达式为真,因此返回bool值true。变量y的值是-0.000 000 000 025,因此大于-1。第二个比较返回false,因为表达式10-i的值是20,与j相等。第三个表达式返回true,因为表达式3+y略微小于3。

可以使用关系运算符来比较任何基本类型或枚举类型的数值,因此现在所需的就是切实可行的、用比较结果改变程序行为的办法。