入门C语言Day15——关系&条件&逻辑操作符

今天来学习操作符中的一些内容,主要讲的是关系&条件&逻辑操作符

1.关系操作符

首先要来了解一下什么是关系操作符,关系操作符其实就是关系运算符,关系运算符又和关系表达式有关。

C语言中用于比较的表达式,就被称为 “关系表达式”,而其使用的运算符就称被为“关系运算符”,主要有以下六个。

> 大于运算符 

 < 小于运算符

>= 小于等于运算符

<= 大于等于运算符

== 相等运算符

 != 不相等运算符

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

而关系表达式常用于if或while结构。

其中要注意的一点是 == 不要和 = 搞混了

如果写做 = ,就是表示对变量赋值,放在if语句中就会一直被判断为真。

为了防止出现这种错误,有的程序员喜欢将变量写在等号的右边。。。

比如正常的写为if (x == 3) ,结果他写为if (3 ==x),这么写的好处在于,如果漏了一个=,系统就会报错。

另外一个需要避免的错误是:多个关系运算符不宜连用

比如a > b > c,虽然在平常看起来十分正确,用的时候也不会报错,但就是结果和想的不一样。

因为关系运算符是从左到右计算,所以实际执行的是(a > b)> c

a > b返回的值是 0 或 1(假或真),然后会把返回的 0 或 1 拿去和c比较,所以就错了

所以如果要判断b是小于a、大于c的,需要这么写:a > b && b > c

&&的意思是并且

以上就是关于关系操作符需要掌握的内容,剩下的只要按照字面意思理解就行,没有特别注意的。

2.条件操作符

条件操作符也叫三目操作符(C语言中唯一一个),需要接受三个操作数的,形式如下:

exp1 ? exp2 : exp3

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

其中的?与:都是固定格式

如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。用图表示就是这样的(exp是表达式的意思):

比如我想使用条件表达式实现找两个数中较大值。

就可以用如下代码:

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 0;
 scanf("%d %d", &a, &b);
 int m = a>b ? a : b;
 printf("%d\n", m);

 return 0;
}

其中int m = a>b ? a : b; 

a > b就是exp1   a是exp2   b是exp3

实际上就是简化if else的一个过程

3.逻辑操作符

逻辑操作符用来提供逻辑判断功能,可以构建更复杂的表达式,主要有&&、||、!(与、或、非)

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

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

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

(结和字面意思来理解,“或”就是两者之一,“与”就是两者都要,“反”实际上就是被人们所熟知的“非”,就是相反的意思,当然也可以理解为UNO中的反向牌(doge))

在C语言中的逻辑运算符及优先级:

一元:!(逻辑非)。

二元:&&(逻辑与)、||(逻辑或)。

以上三种逻辑运算符中,逻辑非 ! 的优先级最高,逻辑与 && 次之,逻辑或 || 优先级最低。即算术、逻辑、赋值运算符的优先级顺序为:(逻辑非) ! >算术 > (逻辑与) &&、(逻辑或) || > (赋值) =

(1)逻辑非 !

用这个表格来演示一下,但要注意逻辑非转变后的情况

原本真对应的是非0,但在!a之后,只有1代表真。

简单来说一下,if语句中只有if后判断为真才会执行后面的内容,所以如果要让实际为假的情况通过if判断,就可以使用逻辑非。

比如这样写:

#include <stdio.h>
int main()
{
 int flag = 0;
 if(!flag)
 {
 printf("do something\n");
 }
 return 0;
}

如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真

所以上的代码的意思就是 flag 为假,执行if语句中的代码。

(2)逻辑与 &&

只有两者都为真,a&&b的值才为1!!!

&& 两边的表达式都是真的时候,整个表达式才为真,只要有1个是假,则整个表达式为假。

(3)逻辑或 ||

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

也就是说,只有都是假的时候才输出0

再来说一下一种逻辑运算符的特点——“短路”

它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是默认的。 如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。

而 || 操作符的左操作数的结果不为0时,就不需要执行右操作数。

像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进计算的运算称为短 路求值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值