第五节 操作符

目录

5.1 关系操作符

5.1.1 关系操作符的种类

5.1.2 关系操作符的用法 

5.2 条件操作符 

5.3 逻辑操作符 

5.3.1 逻辑取反操作符!

5.3.2  逻辑与操作符&&

5.3.3 逻辑或操作符|| 

5.3.4 短路 


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时,就⽆需执⾏右操作数。 像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短路求值。 

好啦,关于操作符的讲解就结束了!!!

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值