目录
一.逻辑运算符
1.原理
2.等级排序
3.求值顺序
二.条件运算符:?
一.逻辑运算符
1.原理
&& | 与(条件都为真,才为真) |
|| | 或(一个条件为真,才为真) |
! | 非(条件为假,才为真) |
expression1&&expression2,两个条件都为真才能为真
expression1||expression2,一个条件都为真就能为真
!expression1,expression1为假则为真
2.等级排序
!优先级和递增运算符一个级别,&&优先级比||高。两者都比关系运算符低,但比赋值运算高
运算符(优先级从高至低) | 结合律 |
() | 从左往右 |
- + (一元运算符)++ -- ! | 从右往左 |
* / % | 从左往右 |
+ -(二元运算符) | 从左往右 |
< > <= >= | 从左往右 |
&& | 从左往右 |
|| | 从左往右 |
== != | 从左往右 |
= += -= /= %= | 从右往左 |
在这个例子中,因为 >的优先级时比&& || 都要大的,所以在进行运算时不加括号也可以。
3.求值顺序
&&和||运算符都是序列点,所以程序在从一个运算对象执行到下一个运算对象之前,所有的副作用都会生效了
先看红色下划线,n初始值为2。在后加加自增之前满足 n < 3;在进过&&后,副作用产生。n自增1,等于3。所以不满足后面的 n <3;最后程序打印two.
还有一单C发现有一个子表达式为假时,就不会会后面的关系表达式求值。(只有&&这样,因为,||的情况下,主要有一个为真就为真)
在这个表达式中,因为n的初始值就为3,一开始就n++ < 3;所以就不会继续执行后面的n++ < 3;但时还是会自增的
||的情况下,主要有一个为真就为真
再这里例子中 n !=2 为真后后面的++n == 2就不执行了
如果一开始为假,还会继续执行后面的判断,知道整个表达式能为真未止
二.条件运算符:?
Expression1?expression2:expression3
如果expression1为真,整个条件表达式的值是expression2的值,否则,是expression3的值。?也是C语言当中的唯一的三元运算符。
比如(5>3)?1:2 值为1
(3>5)?1:2值为2
(a>b)?a:b 如果a>b,则取值a
在这个例子中主要是求解计算刷固定平方面积需要多少的油漆桶。
首先CONVTAGE 350 就是我们要刷的面积。
cans = sq_feet / CONVRAGE;就是要刷的油漆桶数
cans += (sq_feet % CONVRAGE == 0) ? 0 : 1;主要是因为我们在进行计算的时候会有小数。一旦出现没有除尽的数,我们就需要在加一桶。比如1.7。实际上我们需要购买2桶油漆。
最后在cans == 1 ? “can”:"cans";时,如果油漆桶为1个can就用单数新式。从这里也可以看出来条件运算符的第二个和第三个运算对象可以是字符串。
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈