三 运算符及应用(逻辑课)

文章目录

展开

这篇拖的有点长

军训刚结束,就来赶文章了

我相信你们不会听我解释的

那么就直接进入正文吧

这篇又是大量理解背诵内容

大家准备好脑子好好看

0 算术运算符

0.0 什么是运算符

来自百度百科:“运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。”

大家在平时接触的基本运算就是加减乘除。

那么c++中包含怎样的运算符呢?

0.1 一元运算符

一元运算符,就是只含有一个操作数。主要包含正号(+),符号(-),增一(++),减一(–)。

例如:

0.2 二元运算符

二元运算符,含有两个操作数。主要包含加(+),减(-),乘(*),除(/),余(%)。

例如:

0.3 一点区别

当然,增一除了a++,还有++a。

区别是:a++是先取a的值再加,++a是先加再取a的值。

比如:a=2,b=3。

c=b*a++,就是c=3*2=6,结束后a=3。

d=b*++a,就是d=3*3=9,结束后a=3。

我们也可以看出一元运算符运算优先级是高于二元运算符的。

1 赋值运算符

赋值运算符是最常用的手段之一。

赋值运算符都是二元运算符。

①基本赋值运算符:=

将右边的常量或表达式值赋给左边的变量。

例如:

值得注意的是这里j的值是不变的。

大家可以结合上面的算术运算符,如i=j++,来观察变量值的不同。

②复合赋值运算符:+=(加赋值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(余数赋值),<<=(左移赋值),>>=(右移赋值),&=(按位与赋值),|=(按位或赋值),^=(按位异或赋值)。

例如:

移位运算符和位运算符会在后续章节介绍。

赋值运算符的优先级很低,仅仅高于逗号运算符。

所以:

i+=3+2*2等价于:i=i+(3+2*2);

先做算术运算符再做赋值运算符。

2 逻辑运算符

2.0 类型

一元运算符:!(逻辑非)。

二元运算符:&&(逻辑与),||(逻辑或)。

逻辑表达式的值为逻辑值,即布尔值(bool)。

一般情况下,只有0被判断为逻辑假值(false),一切非0均可被判断为逻辑真值(true)。

在存储和表示是,通常使用1表示逻辑真值,0表示逻辑假值。

  • 逻辑非(!):即取反,逻辑值为真,取非后为假;逻辑值为假,取非后为真。
  • 逻辑与(&&):两个操作数均为逻辑真时,结果为真;否则为假。
  • 逻辑或(||):两个操作数均为逻辑假时,结果为佳;否则为真。

2.1 应用

一般逻辑运算符应用在分支结构较多。

如我们上节课提过的:

比如我们要判断一个人的年龄范围。

我们规定0~5岁为儿童,6~17岁为青年,18~59岁为中年,60岁以上为老年。

在这里我们就丰富运用了逻辑与运算。

优先级方面:

逻辑非(!)>算术运算符>逻辑与(&&),逻辑或(||)>赋值。

3 移位运算符

位运算是指在二进制上进行操作。

分为两种,都是二元运算符:

  • 左移位运算符(<<):a<<m,a和m都是整形表达式,且m>=0。表示将整数a按二进制位向左移动m位,高位移出后,低位补0。
  • 右移位运算符(>>):a>>m,a和m都是整形表达式,且m>=0。表示将整数a按二进制位向右移动m位,低位移出后,高位补0。

比如,4<<1,4的二进制数为00000100,左移一位变成00001000,答案为8。

所以<<1可以理解为乘2,>>1可以理解为除2。(在不冒位的情况下)

负数因为有符号位,大家可以自行尝试讨论。

为什么要用位运算?

听先辈们说,是因为快。

4 关系运算符

4.0 介绍

C++有6种关系运算符,都是二元运算符。

分别是:

>(大于),>=(大于等于),<(小于),<=(小于等于),= =,(等于)!=(不等于)。

对于这6种关系运算符,前4种优先级高于后两种。

4.1 实例

下面介绍关系运算符的返回值。

比如:

  • a>b:逻辑假,其值为0。
  • a>=b:逻辑假,其值为0。
  • a<b:逻辑真,其值为1。
  • a<=b:逻辑真,其值为1。
  • a= =b:逻辑假,其值为0。
  • a!=b:逻辑真,其值为1。

5 位运算符

在3中我们介绍了移位运算符,这里我们介绍位运算符。

这两者都是在二进制数上操作。

C++有4种位运算符。

  • 按位与(&):a&b,二元运算符,如果两个相应的二进制位都为1,则该位为1,否则为0。(类似逻辑与)
  • 按位或(|):a|b,二元运算符,两个相应的二进制位中只要有一个为1,则该位为1,否则为0。
  • 按位异或(^):a^b,二元运算符,如果两个相应的二进制位值相同,则该位为0,否则为1。
  • 按位取反(~):~a,一元运算符,将一个二进制位0变为1,1变为0。

位运算会产生许多妙用,需要大家慢慢发现。

在这里写一小段,看看大家能不能发现这段代码的作用。

6 条件运算符

条件运算符是c++中唯一的三元运算符。

格式如下:

条件?表达式1:表达式2

首先计算条件,然后根据条件的结果,决定表达式1还是表达式2。

举个例子:

这是一个函数(函数会在后面讲解)。

可以理解为有a,b两个量,然后return后的条件运算符就是返回值。

在这里,我们先判断a是否大于b。如果是,我们返回表达式1,也就是a;如果不是,我们返回表达式2,也就是b。这样我们就可以快速取两个数中较大的那个。

7 优先级相关

常用的运算符的优先级总结如下,供大家参考。大致分为15个等级。

大家可以在实际应用中感受到优先级的不同带来的逻辑思考。

8 写在后面

今天的内容多为介绍,需背诵的东西较多。

加上其中有些逻辑方面的思考,大家需要自己绕一绕。

8.0 提问联系

本文有些地方有笔误或根本性问题,如有发现请及时联系博主。

有关于本文的疑问也可随时联系博主,QQ:1409111459。

当然也可以直接在下方评论区写出你的想法。

8.1 参考资料

1.关淞元 . C语言从新手到高手:中国铁道出版社有限公司,2019

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注