关系操作符

2. 关系操作符

2.1初识关系操作符

C语⾔⽤于⽐较的表达式,称为"关系表达式"(relationalexpression),⾥⾯使⽤的运算符就称 为"关系运算符"(relationaloperator),主要有下⾯6个。

关系表达式通常返回 0 或 1 ,表⽰真假。

C语⾔中,0 表⽰假,所有⾮零值表⽰真。⽐如, 2 > 1 则返回1 , 1 > 2 则返回 0.

关系表达式常⽤于 if 或 while 结构。

cpp 复制代码
if (x % 3 == 0 )
{
    printf("%d是三的倍数",x);
}

2.2 '==' 和 '='

注意:相等运算符== 与赋值运算符=是两个意义完全不同的运算符,不要混淆。有时候,可能会不⼩⼼写出下⾯的代码,它可以运⾏,但很容易出现意料之外的结果。

cpp 复制代码
if ( x = 3 )

上面原本意思是x == 3,即当x等于3时,执行if管理的语句,结果不小心写成了x = 3,这个式子表示将3这个值赋值给x,它的返回值是3,随意if的判断总为真.

为了防⽌出现这种错误,有的程序员喜欢将变量写在等号的右边。

cpp 复制代码
if ( 3 == x )

这样的话,如果您将==错写成了=,因为常量不能被赋值,所以编译器会报错,以提醒您.

2.3 多个关系操作符不宜连用

cpp 复制代码
i < j < k

这在数学中非常常见,我们想要表示 j 的值大于 i 并且小于 k .但在C语言中表达的意思并不是这样

连续使⽤两个⼩于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。

因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式:

cpp 复制代码
( i < j ) < k 

上面的式子中,( i < j )根据对错返回 0 或 1,而最终是 0 或 1 与变量k做比较,再得到一个0 或 1.

如果确实是想判断 j 的值是否在 i 和 k 之间,因该是用下面的写法:

cpp 复制代码
i > j && i < k

这里来一个示例: 我们输入一个人的年龄,如果年龄在18~36岁之间,我们输出青年.

cpp 复制代码
int main()
{
    int age = 0;
    scanf("%d", &age);
    if(18 <= age <= 36)
    {
        printf("⻘年\n");
    }
    return 0;
}

当我输入2作为年龄,这显然不在规定区间内,照理不应该打印任何东西.结果依然输出青年,如下:

这是因为,我们先拿18和age中存放的2做⽐较,表达式18<=2为假,所以这里结果是0,再拿0 和 36⽐较,0<=36为真,所以打印了青年,所以即使当age是2的时候,也能打印 问题,这个代码应该怎么写呢?

cpp 复制代码
if ( age >= 18 && age <= 36 )

只需将if里面的语句改成如上样式即可,而在这里使用的逻辑操作符&&会在本章后面详细解释.

以上就是关于操作符,我们需要掌握的,剩下的只要按照字⾯意思理解使⽤就⾏,没有特别注意的。

相关推荐
All for pursuit.3 小时前
【回溯-7】494.目标和
数据结构·c++·算法·leetcode
白杨尚青3 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
Jasmine_llq3 小时前
《P17461 [GESP202609 八级] 生成树计数》
算法·栈·tarjan 算法·边双连通分量·深度优先搜索 dfs·tarjan 保存当前路径节点·模乘法
Jasmine_llq3 小时前
《P17462 [GESP202609 八级] 末班车》
算法·dijkstra 算法·最大化版本,求最长可行值·建反向图(逆图 / 反转边)·多源 dijkstra 思想·对每个终点单独跑一遍djst·离线预处理 + 在线查询
the3clipse4 小时前
H.265熵编码核心:CABAC自适应二进制算术编码详解——如何将语法元素高效压缩为比特流
人工智能·算法·视频编码·h.265·hevc·cabac·cavlc
CQU_JIAKE4 小时前
10.4【A】
算法
Godspeed Zhao4 小时前
现代智能雷达技术19——算法(5)
算法
(Charon)4 小时前
【C++面试】RAII到底是什么:从资源管理理解C++对象生命周期
c++·算法·面试
Omics Pro4 小时前
之江实验室NAR|虚拟细胞3阶段训练范式
数据库·人工智能·算法·机器学习·自然语言处理
Tisfy4 小时前
LeetCode 0678.有效的括号字符串:O(n)+O(1)一次遍历
算法·leetcode·字符串·题解·贪心·括号匹配