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

Posted 英雄哪里出来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了光天化日学C语言(10)- 关系运算符 | 3 > 2 > 1 真的成立吗?(建议收藏)相关的知识,希望对你有一定的参考价值。

📢博客主页:https://blog.csdn.net/WhereIsHeroFrom
📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!
📢本文由 英雄哪里出来 原创,转载请注明出处,首发于 🙉 CSDN 🙉
作者的专栏:
  👉C语言基础专栏《光天化日学C语言》
  👉算法进阶专栏《夜深人静写算法》
  👉C/C++大厂面试专栏《C/C++ 面试 100 例》

一、前言

  本文作者是从 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 语言大神!

📢博客主页:https://blog.csdn.net/WhereIsHeroFrom
📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!
📢本文由 英雄哪里出来 原创,转载请注明出处,首发于 🙉 CSDN 🙉
作者的专栏:
  👉C语言基础专栏《光天化日学C语言》
  👉算法进阶专栏《夜深人静写算法》
  👉C/C++大厂面试专栏《C/C++ 面试 100 例》

以上是关于光天化日学C语言(10)- 关系运算符 | 3 > 2 > 1 真的成立吗?(建议收藏)的主要内容,如果未能解决你的问题,请参考以下文章

光天化日学C语言(21)- 逗号运算符 | 压缩代码的神器

☀️光天化日学C语言☀️(27)- 条件运算符 | 唯一的三目运算符

❤️光天化日学C语言❤️(20)- 赋值运算符与赋值表达式 | 让代码变得更加简洁

❤️光天化日学C语言❤️(20)- 赋值运算符与赋值表达式 | 让代码变得更加简洁

光天化日学C语言(22)- 运算符优先级和结合性 | 有了这张表,再也不怕记不住了

光天化日学C语言(13)- 位运算概览 | 开启位运算的征程