计算机擅长比较值以确定其中一个是否大于、小于或等于另一个。这些类型的操作很有价值,例如,它可以检测销售图表、确定收益和损失、对比数字以确保其在可接受的范围内以及验证用户给出的输入等。

在 C++ 中比较数值数据时可以使用关系运算符。字符也可以使用这些操作符进行比较,因为在 C++ 中字符被认为是数字值。每个关系运算符确定两个值之间是否存在特定的关系。

例如,大于运算符(>)确定某值是否大于另一个值,相等运算符(=)确定两个值是否相等。表 1 列出了 C++ 所有的关系运算符。

表 1 关系运算符

关系运算符

含 义

>

大于

<

小于

>=

大于或等于

<=

小于或等于

==

等于

!=

不等于

所有关系运算符都是二进制的,这意味着它们使用两个操作数。以下是使用大于运算符的表达式的示例:

x > y

该表达式称为关系表达式,它用于确定 x 是否大于 y。以下表达式可以确定 x 是否小于 y:

x < y

关系的值

那么,在程序中如何使用关系表达式呢?请记住,所有表达式都有一个值。关系表达式是布尔表达式,这意味着它们的值只能是真(true)或假(false)。如果 x 大于 y,则表达式 x>y 的值将为 true,表达式 x

== 运算符确定其左侧的运算项是否等于右侧的运算项。如果两个运算项具有相同的值,则表达式的值为 true。假设 a 为 4,则以下表达式的值为 true:

a == 4

而以下表达式的值则为 false:

a == 2

注意,关系运算符中的等号运算符是两个 = 符号在一起。不要将此运算符与赋值运算符混淆,后者只有一个 = 符号。== 运算符确定变量是否等于另一个值,而 = 运算符则是将运算符右侧的值赋给左侧的变量。

两个关系运算符实际上测试了一对关系。>= 运算符确定其左侧的运算项是否大于或等 于右侧的运算项。例如,如果 a 为 4,b 为 6,c 为 4,则以下两个表达式均为 true:

b >= a

a >= c

而以下表达式则为 false:

a >= 5

操作符 <= 确定其左侧的运算项是否小于或等于右侧的运算项。沿用上例,如果 a 是 4, b 是 6,c 是 4,则以下两个表达式的值都是 true:

a <= c

b <= 10

并且以下表达式则为 false:

b <= a

最后一个关系运算符是 !=,这是不相等的运算符。它确定其左侧的运算项是否不同于(即不等于)右侧的运算项,它与 == 操作符相反。如前所述,如果 a 为 4,b 为 6,c 为 4,则以下两个表达式均为 true:

a != b

b != c

这些表达式的值是 true,因为 a 不等于 b,b 不等于 c。但是,以下表达式为 false,因为 a 等于 c:

a != c

表 2 显示了其他关系表达式及其 true 或 false 值。

表 2 关系表达式示例(假设 x 为 10,y 为 7)

表达式

x

false,因为 x 不小于 y

x > y

true,因为 x 大于 y

x >= y

true,因为 x 大于或等于 y

x <=y

false,因为 x 不小于或等于 y

y != x

true,因为 y 不等于 x

真值和假值

如果关系表达式可以评估为 true 或 false,那么这些值在程序内部是如何表示的?计算机如何在内存中存储真值(true)?又如何存储假值(false)?

在 C++ 中,这两个抽象状态被转换为数字,即零被认为是 false,而任何非零的值都被认为是 true。C++ 关键字 false 被存储为 0,关键字 true 被存储为 1。当关系表达式为 false 时,它将被评估为 0。但是,当关系表达式为 true 时,并不总是被评估为 1。虽然它一般会被评估为 1,但是实际上它可以被评估为任何非零值。

为了更充分地说明,看一个程序:

// This program displays the values C++ uses to represent true and false.

#include

using namespace std;

int main()

{

bool trueValue, falseValue;

int x=5, y = 10;

trueValue = (x < y);

falseValue = (y == x);

cout << "True is " << trueValue << endl;

cout << "False is " << falseValue << endl;

return 0;

}

程序输出结果:

True is 1

False is 0

来仔细研究一下程序中包含关系表达式的语句:

trueValue = (x < y);

falseValue = (y == x);

这些语句可能看起来很奇怪,因为它们将比较之后的结果值赋给变量。在第一个语句中,变量 trueValue 被赋值为 x

在编写这些语句时,大多数程序员将关系表达式括在括号中,如上所示,以使之更清晰。当然,实际上并不需要括号,因为即使没有它们,在执行赋值操作之前也将先执行关系操作。这是因为关系运算符的优先级高于赋值运算符。同样,算术运算符的优先级高于关系运算符。

例如,以下语句:

result = x < y - 8;

相当于语句:

result = x < (y - 8);

在这两种情况下,都是首先评估 y-8,然后将结果值与 x 进行比较。不过请注意,第二个语句要更清楚一些。当需要在关系表达式中使用一个算术表达式时,那么使用括号将后者括起来总是一个好王意。

表 3 显示了包含关系表达式的其他语句示例。

表 3 包含关系表达式的语句(假设 x 为 10,y 为 7,z 是 int 或 bool 变量)

语 句

结 果

z = x

z 被赋值为 0,因为 x 不小于 y

cout< y);

显示 1,因为 x 大于 y

z = (x >= y);

z 被赋值为 1,因为 x 大于或等于 y

cout<

显示 0,因为 x 不小于或等于 y

z = (y != x);

z 被赋值为 1,因为 y 不等于 x

cout<

显示 1,因为 x 等于 y + 3

关系运算符之间也有优先顺序。测试相等或不相等的两个运算符(== 和 !=)具有相同的优先级。测试相对大小的其他 4 个关系运算符具有相同的优先级。这 4 个相对关系运算符的优先级高于两个相等或不相等关系运算符。

换句话说,>、>=、

以下是一个应用示例,如果 a = 9,6 = 24 和 c = 0,则以下语句显示 1:

cout << (c == a > b);

由于此表达式中运算符的相对优先级,首先计算 a>b。由于 9 不大于 24,所以评估为 false 或 0,然后评估 c = 0。因为 c 确实等于 0,所以这个计算结果为 true 或 1。将 1 插入到输出流中并进行打印。

c++语言运算符,C++关系运算符(超详细)相关推荐

  1. 算数运算符与关系运算符_【Flutter 110】Flutter手把手教程Dart语言——运算符

    运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.Dart语言内置了丰富的运算符,并提供了以下类型的运算符:「算术运算符.关系运算符.类型判断运算符.赋值运算符.逻辑运算符.按位和移位运算 ...

  2. 【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式

    文章目录 一.运算符 1.赋值运算符号 2.一元运算符 3.算术运算符 4.关系运算符 5.自增与自减运算符 6.逻辑运算符 7.括号运算符 8.位运算符 左移位: 右移位: 9.三元(三目)运算符 ...

  3. 【Cprimerplus_03】算术运算符、关系运算符、逻辑运算符

    算术运算符.关系运算符.逻辑运算符 文章里面的所有截图和"之前所学过的内容"都是来自于翁恺的C语言视频. 之前已经学习过简单的算术运算符.关系运算符(又称比较运算符).逻辑运算符. ...

  4. linux脚本或关系表达,Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等...

    Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...

  5. C#算数运算符、关系运算符、逻辑运算符、语句

    C#算数运算符.关系运算符.逻辑运算符.语句 一.运算符: (一).算术运算符:+ - * /% % --取余运算取余运算的应用场景: 1.奇偶数的区分. 2.把数变化到某个范围之内.--彩票生成. ...

  6. Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

    Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最 ...

  7. c语言有关字符的操作,C语言字符操作总结大全(超详细).doc

    C语言字符串操作总结大全(超详细) 作者: 本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n ...

  8. C语言:算术运算符、关系运算符与逻辑运算符

    目录 一.算术运算符 二.关系运算符 三.逻辑运算符 一.算术运算符 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main( ...

  9. Go 学习笔记(5)— 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符

    1. Go 运算符分类 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 1.1 算术运算符 下表列出了所有Go语言的算术运算符.假定 A 值为 10, ...

最新文章

  1. 多级反馈队列调度算法具体原理
  2. 高效搭建Storm全然分布式集群
  3. golang 警告提示 Error string should not be capitalized or end with punctuation mark
  4. 行千里,看山城轻轨穿楼越林;致广大,望重庆交通桥上桥下
  5. 关于JVM中YGC的来龙去脉
  6. Java关键字final、static
  7. 二维字符数组转字符串c语言,[求助] 怎样转换一个字符二维数组到一维数组~~~...
  8. Centos7 搭建 Socks 服务
  9. <数据结构> rear指针指向队尾元素 牺牲一个存储位置 的循环队列实现(C语言)(第4种/共6种)
  10. 【原创】自制操作系统知识储备(一)---流程篇
  11. 多传感器融合算法,单目测距、基于双目,长焦短焦,图像拼接,环视等
  12. iPhone手机拍的图片为什么电脑上打不开?秒懂
  13. QML 中如何动态创建组件
  14. ITIL及ITSS相关概念介绍
  15. 电商平台数据查询工具(京东数据分析软件)
  16. 如何用MathType编辑出积分符号
  17. Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
  18. c语言向eeprom写入浮点数,24C64 EEPROM读写的C语言程序.doc
  19. android修改重力感应方向
  20. 数据结构顺序表和单链表优缺点

热门文章

  1. offsetTop值和position的关系
  2. 计算机概述.ppt,一计算机概述.ppt
  3. c语言怎么定义存储过程输出的游标,存储过程触发器和游标.ppt
  4. 计算机组成原理(三)存 储 器
  5. ps:选区的存储及载入
  6. PS基础-day03选区,自由变化
  7. 取消input焦点,返回上一页
  8. 沉入海底 2 年的微软数据中心浮出水面:故障率只有陆地上的 1/8,除了长点贝类和藻类完全没问题...
  9. 【期望】BZOJ4872 [SHOI2017] 分手是祝愿
  10. python名片打印程序代码_基于Python的名片识别接口调用代码实例