14-关系表达式
5.1.12 关系表达式
计算机不只是机械的数字计数器。它能够对值进行比较,这种能力是计算机决策的基础。在C++中,关系运算符是这种能力的体现。C++提供了6种关系运算符来对数字进行比较。由于字符用其ASCII码表示,因此也可以将这些运算符用于字符。不能将它们用于C-风格字符串,但可用于string类对象。对于所有的关系表达式,如果比较结果为真,则其值将为true,否则为false,因此可将其用作循环测试表达式。(老式实现认为结果为true的关系表达式的值为1,而结果为false的关系表达式为0。)表5.2对这些运算符进行了总结。
| 操 作 符 | 含 义 | | :----- | :----- | :----- | :----- | | < | 小于 | | <= | 小于或等于 | | = = | 等于 | | > | 大于 | | >= | 大于或等于 | | != | 不等于 |
这6种关系运算符可以在C++中完成对数字的所有比较。如果要对两个值进行比较,看看哪个值更漂亮或者更幸运,则这里的运算符就派不上用场了。
下面是一些测试示例:
for (x = 20; x > 5; x--) // continue while x is greater than 5
for (x = 1; y != x; ++x) // continue while y is not equal to x
for (cin >> x; x == 0; cin >> x) // continue while x is 0
关系运算符的优先级比算术运算符低。这意味着表达式:
x + 3 > y - 2 // Expression 1
对应于:
(x + 3) > (y - 2) // Expression 2
而不是:
x + (3 > y) - 2 // Expression 3
由于将bool值提升为int后,表达式(3>y)要么为1,要么为0,因此第二个和第三个表达式都是有效的。不过我们更希望第一个表达式等价于第二个表达式,而C++正是这样做的。