关系运算符与逻辑运算符
在算数运算符那一节当中,我们学习了以下几种运算符以及它们的优先级:
1. 赋值运算符=
2. 加法运算符+
3. 减法运算符-
4. 符号运算符+、-
6. 乘法运算符*
7. 除法运算符/
8. 求余运算符%
9. 自增、自减运算符++,--
并且还了解了它们的优先级。
![bff8eda37fdf079fe1dc6ff706690907.png](https://i-blog.csdnimg.cn/blog_migrate/4a168cb2e8fcb0619fc87d7110110954.png)
使用括号可以先算括号里面的运算符,和数学中一样。类似于:
sum
上式未使用括号,*优先级高于+,b先乘以c,结果再加a。
下式使用了括号,先算a+b,结果再乘以c。
本节中,我们来继续熟悉更多的运算符吧。
1. 关系运算符
1.1 大于>、小于<
![935dad6cbbd5d55bf82e611b5ae11eb6.png](https://i-blog.csdnimg.cn/blog_migrate/5532a47a6fd93d62c82ce468435b8343.png)
1 > 2,结果为假。在C语言中,用0表示假。
1 < 2,结果为真。在C语言中,用1表示真。
![cc853e4f7ed5e4bf161deb3e834bca22.png](https://i-blog.csdnimg.cn/blog_migrate/d7fd8c6c47d913c9351b1c8d094fd133.png)
大于、小于表现在数轴上,如上图所示。注意,N为空心。也就是不能取N。
我们知道1 > 1,肯定结果为假的嘛。那如果我们想要可以取到N呢。那可以使用运算符,大于等于,或小于等于。
1.3 大于等于>=、小于等于<=
![f6575ba92b3e16c8840732aee85961a2.png](https://i-blog.csdnimg.cn/blog_migrate/ce971f40fbd4095e6115bad7cfa8cc50.png)
![f9753ec06fc791f681c4136c595ba83c.png](https://i-blog.csdnimg.cn/blog_migrate/f4db2a4f95c325c6c1ff7bd1c0106461.png)
![0702287f2d807749a4929e25713da6bc.png](https://i-blog.csdnimg.cn/blog_migrate/ea7fb0e532fbc14a41f9595acafee463.jpeg)
2. 等于==、不等于!=
等于运算符以及不等于运算符,就单纯的判断运算符两边的值是否相等或不相等。
![894646b242b7b0b42b76f83aa5010f18.png](https://i-blog.csdnimg.cn/blog_migrate/d0c6f09ad0a67aa31e4b7b56712753b9.png)
特别注意这里的等于运算符==与不等于运算符!=,与数学里面的不同。由于=号以及被作为赋值了。所以相等在C语言里面用两个=来表示。
3. 逻辑运算符
我们来看看在C语言里面,怎样表达数轴上的这两个条件。
![5d9e757e8088d1f67bc454986e09d2ba.png](https://i-blog.csdnimg.cn/blog_migrate/6803b26662f89fac3372fa513c2750fd.png)
我们在上面了解了大于等于和小于等于的用法,但是目前好像没法表示上面这两个数轴的区间。
第一个数轴区间:x <= 2 或 x >= 10。
由于数值只要满足任意一个要求,就满足要求,所以这里我们用或。
第二个数轴区间:x >= 2 且 x <= 10。
由于数值要满足两个条件,才满足要求,所以这里我们用且。
所以,这里必须引入新的运算符,来表达这种情况。
3.1 逻辑或||、逻辑与&&
逻辑或运算符写法为 ||, 两条竖线。
逻辑与运算符写法为 &&。
第一个数轴区间:(x <= 2) || (x >= 10)。
第二个数轴区间:(x >= 2) && (x <= 10)。
我们在上面加了(),确保两边完成之后,再进行与运算、或运算。然而,事实上,这里不加括号也是可以的。因为||和&&的运算符优先级比关系运算符>=、<=低。所以,按照优先级也会是先算两边,进行与、或。
但是,为了着重一般会加上括号。在写条件时,不要吝啬括号,这样可以最大程度的保证程序按照你的想法执行。
举个反例:
![4ffe4d388f451d5a642a05d4f8f7ba32.png](https://i-blog.csdnimg.cn/blog_migrate/ccbeddd56c40f68325df63832ddb44a6.png)
假如我们用了一个运算符,放在中间。我们预想的效果是,先两边,两边的结果再进行中间的?运算。?的优先级如果低于<=和>=那么一切将照常运行。问题是,如果?的优先级高于两边呢?那么2 ? x会先进行运算。这样程序运行的结果就会超出你的预料了。
3.2 逻辑非!
使用逻辑非运算符,我们可以对当前的结果,取它的反向。
例如,2 != 3,为真,但是如果加上逻辑非之后呢。
![57182c133aa263608566426b97988ac7.png](https://i-blog.csdnimg.cn/blog_migrate/d8bd09f8237796d484e769832bfe4c43.png)
它的结果就是假了。
那我们再看看上面的区间,如果被逻辑非之后呢?
![396aa77d3a9a1f173e56dad86c318463.png](https://i-blog.csdnimg.cn/blog_migrate/6acbb4b71b13b834b13f0fc0a03723c4.jpeg)
4. 运算符优先级
![7af02ec7d7d50843014f1c371afd83c5.png](https://i-blog.csdnimg.cn/blog_migrate/a09e436b1429d0dabef8ac814af36c8e.jpeg)
![7f2153c6480f1bbef2ec0b834436e5ec.png](https://i-blog.csdnimg.cn/blog_migrate/33a4dd4a42524780367171cb04675dbe.jpeg)