(2)C语言中的操作符(运算符):关系操作符(>、<、>=、<=、==、!=)、条件操作符(exp1 ? exp2 : exp3)、逻辑操作符(&&、||、!)介绍

发布时间:2024年01月20日

目录

前言

一、关系操作符

1. > 大于运算符

2. < 小于运算符

3. >= 大于等于运算符

4. <=小于等于运算符

5. == 相等运算符

6.? != 不相等运算符

7. 需要避免的错误

???????????(1)多个关系运算符不宜连用。

(2) 相等运算符==与赋值运算符=

二、条件操作符

1. exp1 ? exp2 : exp3

三、逻辑操作符

1. 逻辑取反运算符!

2. 逻辑与运算符&&

3. 逻辑或运算符||

4. 逻辑运算符的特点

结语:


前言

在上一篇文章中,我们介绍了算数操作符、赋值操作符、单目操作符如何使用:

(1)C语言中的操作符(运算符):算术操作符、赋值操作符、单目操作符介绍-CSDN博客

今天让我们来看看关系操作符、条件操作符、逻辑操作符是如何使用的吧。

一、关系操作符

C语言用于比较的表达式,称为“关系表达式”,表达式里面使用的运算符就称为“关系运算符”。

关系表达式通常返回 0 或 1 ,表示真假。 C语言中, 0 表示假,所有非零值表示真。

比如, 2?> 1?返回 1 , 1 > 2?返回 0 。 关系表达式常用于 if 语句或 while 语句结构。

1. > 大于运算符

大于运算符用于判断第一个操作数是否大于第二个操作数,返回0或1,表示真假。

使用方法如下图:

图中a>b的返回值1赋值给了变量i,b>a的返回值0赋值给了变量j。

2. < 小于运算符

小于运算符用于判断第一个操作数是否小于第二个操作数,返回0或1,表示真假。

使用方法如下图:

图中使用 b < a 作为判断条件,为真则执行printf输出。

3. >= 大于等于运算符

大于等于运算符用于判断第一个操作数是否大于等于第二个操作数,返回0或1,表示真假。

使用方法如下图:

图中两个表达式的结果均为真,这就是大于等于的作用。

4. <=小于等于运算符

小于等于运算符用于判断第一个操作数是否小于等于第二个操作数,返回0或1,表示真假。

使用方法如下图:

图中进行了两次 if 语句判断,第一次为真,执行第二个if语句,第二次为假, printf 自然也就不会执行了。

5. == 相等运算符

相等运算符用于判断两个操作符是否相等,返回0或1,表示真假。

使用方法如下图:

6.? != 不相等运算符

不相等运算符用于判断第一个操作数是否与第二个操作数不相等,返回 0 或 1 ,表示真假。

使用方法如下图:

图中 a != c 表达式结果为假,所以执行了 else 语句控制的 printf 。

7. 需要避免的错误

???????????(1)多个关系运算符不宜连用。

上面示例中,连续使用两个小于运算符。这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 b?的值在 a?和 c?之间。因为关系运算符是从左到右计算,所以实际执行的是下面的表达式。

上面式子中, a?< b?返回 0 ,所以最终是 0 与变量 c?进行比较。如果想要判断变量 b的值是否在 a?和 c?之间,应该使用下面的写法。

???????

&&这个运算符是并且的意思,在下面的逻辑操作符里会详细说明。

(2) 相等运算符==与赋值运算符=

有时候,可能会不小心写出下面的代码,它可以运行,但很容易出现意料之外的结果。

上面示例中,原意是 x == 3 ,但是不小心写成 x = 3 。这个式子表示对变量 x 赋值 3 ,它的返回值为 3 ,所以 if 判断总是为真。 为了防止出现这种错误,有的程序员喜欢将变量写在等号的右边。

这样的话,如果把 == 误写成 = ,编译器就会报错。

二、条件操作符

条件操作符也叫三目操作符,一共有三个操作数。表示形式如下:

1. exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;

如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

比如,不使用条件操作符实现找两个数中较大值:

使用条件操作符实现找两个数中的较大值:

对比可以看出,使用条件操作符会让代码更简短。

三、逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面三个运算符。

! :逻辑取反运算符(改变单个表达式的真假)。

&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

|| :或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。

1. 逻辑取反运算符!

! 就是逻辑取反运算符,作用是改变单个表达式的真假。

比如,我们有?个变量叫 flag ,如果flag为假,要做一个什么事情,就可以这样写代码:

如果 flag 为真, !flag(非真) 就是假,如果flag为假, !flag(非假) 就是真,所以上面的代码的意思就是 flag 为假,执行if语句中的代码。

2. 逻辑与运算符&&

&& 就是与运算符,意思是并且, && 是一个双目操作符,使用的方式是 a && b , && 两边的表达式都是真的时候,整个表达式才为真,只要有一个是假,则整个表达式为假。

比如:如果我们说月份是3月到5月,是春天,那么使用代码怎么体现呢?

这里表达的意思就是month既要大于等于3,又要小于等于5,必须同时满足。

3. 逻辑或运算符||

|| 就是或运算符,意思是或者, || 也是?个双目操作符,使用的方式是 a || b , || 两边的表达式只要有一个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

比如:我们说一年中月份是12月或者1月或者2月是冬天,那么我们怎么使用代码体现呢?

4. 逻辑运算符的特点

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。 如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

如前面的代码:

表达式中&&的左操作数是 month >= 3 ,右操作数是 month ,当左操作数 month >= 3 的结果是0的时候,即使不判断 month ,整个表达式的结果也是0(不是春季)。 所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。

对于 || 操作符是怎么样呢?我们结合前面的代码:

如果month==12,则不用再判断month是否等于1或者2,整个表达式的结果也是1(12月是冬季)。 所以, || 操作符的左操作数的结果不为0时,就无需执行右操作数。 像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。

结语:

本篇文章介绍了关于操作符、条件操作符、逻辑操作符是如何使用的,下一篇关于操作符的文章敬请期待。

文章来源:https://blog.csdn.net/man_man_chang_lu/article/details/135683503
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。