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