☀️光天化日学C语言☀️(10)- 关系运算符 | 3 > 2 > 1 真的成立吗?

举报
英雄哪里出来 发表于 2021/07/03 21:37:17 2021/07/03
【摘要】 3 > 2 > 1 真的成立吗?

一、前言

  本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
  于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
  这一章的主要内容是关系运算符,基本和数学中的大小关系判断无异,就当复习一下吧。

二、人物简介

  • 第一位登场的就是今后会一直教我们C语言的老师 —— 光天。
  • 第二位登场的则是今后会和大家一起学习C语言的没什么资质的小白程序猿 —— 化日。

三、关系运算符

1、概览

  • 关系运算符是用来判断符号两边的数据的大小关系的。
  • C语言中的关系运算符主要有六个,如下:

2、表示方式

  • C语言中的关系运算符和数学中的含义相同,但是表示方法略有不同,区别如下:
关系运算符释义 C语言表示 数学表示
大于 > >
大于等于 >=
等于 == =
不等于 !=
小于 < <
小于等于 <=
  • 关系运算符的两边可以是变量、数值 或 表达式,例如:

1)变量

  • a > b
  • a != b

2)数值

  • 3 > 5
  • a == 6

3)表达式

  • a + b > 4
  • a > a + b

四、关系运算符的应用

1、运算结果

  • 关系运算符的运算结果只有 0 或 1。当条件成立时结果为 1,条件不成立结果为 0。
  • 我们来看一段代码,如下:
#include <stdio.h>
int main() {
    printf("%d\n", 1 > 2);
    printf("%d\n", 1 < 2);
    return 0;
}
  • 得到的输出结果为:
0
1
  • 原因就是1 > 2在数学上是不成立的,所以结果为0;而1 < 2在数学上是不成立的,所以结果为1

2、运算符嵌套

  • 关系运算符是允许嵌套使用的,即运算的结果可以继续作为关系运算符的运算参数,例如以下代码:
#include <stdio.h>
int main() {
    printf("%d\n", 1 > 2 > -1);
    return 0;
}
  • 输出结果是多少呢?
  • 由于1 > 2的结果为0,所以1 > 2 > -1等价于0 > -1,显然是成立的,所以输出的结果为:
1

  • 有关于结合性的内容,会在运算符的内容都讲完后,就运算符优先级和运算符结合性进行一个统一讲解,现在这个阶段,你只需要知道,关系运算符都是左结合,即存在多个运算符,有没有括号的情况下,一律从左往右计算。

【例题1】给出以下代码,问输出的结果是什么。

#include <stdio.h>
int main() {
    printf("%d\n", 1 < 2 > 1);
    printf("%d\n", 3 > 2 > 1);
    return 0;
}

3、运算符优先级

  • !===的优先级低于><>=<=
  • 优先级是什么呢?
  • 看个例子就能明白。
#include <stdio.h>
int main() {
    printf("%d\n", 1 < 2 == 1);
    return 0;
}
  • 我们可以做出两种假设:
  • 假设1==优先级低于<1 < 2优先计算,则表达式等价于1 == 1,成立,输出1
  • 假设2==优先级高于<2 == 1优先计算,则表达式等价于1 < 0,不成立,输出0
  • 实际上,这段代码的结果为:
1
  • ==的优先级低于<,当然,同学们可以试下 !=和其它符号的关系。
  • 另外,关系表达式会进场用在条件判断 if语句中,例如:
if(a < b) {
    // TODO
}
  • 我们会在将if语句的时候继续复习关系运算符相关的知识哦~

4、== 和 =

  • 初学者最容易犯的错是把===搞混,前者是判断相等与否,而后者是赋值。
  • 看一段代码,就能知道:
#include <stdio.h>
int main() {
    int a = 0; 
    printf("%d\n", a = 0);
    printf("%d\n", a == 0);
    return 0;
}
  • 以上这段代码的输出结果是:
0
1
  • 神不神奇,意不意外?!

通过这一章,我们学会了:
  1)6种关系运算符;
  2)关系运算符的嵌套;
  3)关系运算符的优先级;

  • 希望对你有帮助哦 ~ 当然,要多写代码尝试下文中提到的各种情况哦,祝大家早日成为 C 语言大神!

课后习题


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。