目录
5.1 关系操作符
5.1.1 关系操作符的种类
C语⾔⽤于⽐较的表达式,称为“关系表达式”,⾥⾯使⽤的运算符就称 为“关系运算符”,主要有下⾯6个
> ⼤于运算符
< ⼩于运算符 •
>= ⼤于等于运算符 •
<= ⼩于等于运算符
== 相等运算符 •
!= 不相等运算符
5.1.2 关系操作符的用法
关系操作通常返回0 1,表示真假
C语⾔中, 0 表⽰假,所有⾮零值表⽰真。 关系表达式常⽤于 if 或 while 结构(下一节会讲)
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,
上⾯⽰例中,原意是 x==3 ,但写成了x=3,这个式子表示对变量x赋值3,它的返回值为3,所以 if 判断总是为真。在输入的值为5时,也打印出了hehe,。 为了防⽌出现这种错误,有的程序员喜欢将变量写在等号的右边。 3= x 。这样的话,如果把==用成=,编译器会报错
另外,需要注意·,多个关系运算符不宜连用
例如 我们想输出一个数字,如果大于等于18,小于等于36,就输出yes
但当我们输入45时,也输出了yes
这是因为什么呢
这是因为关系运算符是从左到右计算,所以实际执⾏的是 18<=45为真,表达式结果为1,1<=36为真,输出yes。正确的写法是18<=i&&i<=36(使用逻辑与操作符,下面会讲)
5.2 条件操作符
条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 如果 exp1 为假,exp3 计算,计算的结果是整个表达式的结果。
练习1:输入一个数a,如果a的值大于6,那么b的值为7,否则b的值为-7,再输出b的值
如果运用条件运算符,可以写成
练习2 使⽤条件表达式实现找两个数中较⼤值
5.3 逻辑操作符
逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,
主要有下⾯三个运算符。
! :逻辑取反运算符(改变单个表达式的真假)
&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
5.3.1 逻辑取反操作符!
⽐如,我们有⼀个变量叫 h ,如果h为假,要输出no,
如果 flag 为真, !flag 就是假,如果flag 为假, !flag 就是真 所以上⾯的代码的意思就是flag为假 ,执⾏if语句中的代码
5.3.2 逻辑与操作符&&
&& 是与运算符,就是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b,&&两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。
⽐如:如果我们说⽉份6月到8月,是夏天,
5.3.3 逻辑或操作符||
|| 是或运算符,就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。
⽐如:我们说⼀年中⽉份是12⽉或者1⽉或者2⽉是冬天
5.3.4 短路
C语⾔逻辑运算符有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是 一定的。 如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
如前⾯的代码: 1 if(i >= 6&& i <= 8 ,左边的操作数是i>=6,右操作数是i<=8 ,当左操作数 i >=6的结果时0时,即使不判断右边i<=8,整个表达式的结果也是0(不是夏季)。 所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏
对于 || 操作符
如果month=12,则不⽤再判断month是否等于1或者2,整个表达式的结果也是1(是冬季)。 所以, || 操作符的左操作数的结果不为0时,就⽆需执⾏右操作数。 像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短路求值。
好啦,关于操作符的讲解就结束了!!!