关于C语言中的运算符小结

关于C语言中的运算符小结

知识内容参考《C Primer Plus》(第6版)中文版,并结合自己的思考所写

运算符分为一下三种

  • 基本运算符
  • 逻辑运算符
  • 其他运算符
  • 按位运算符

1. 基本运算符

分类:

  • 赋值运算符
  • 加法运算符
  • 减法运算符
  • 符号运算符
  • 乘法运算符
  • 除法运算符

说明:C用运算符表示算术运算(注意:C没有指数运算符,不过,C的标准数学库提供了一个pow( )函数用于指数运算)

1.1.1 赋值运算符:=

说明:在C语言中,=意味着是一个赋值运算符
示例:

a = 2022;

读作“把值2022赋给变量a”
注意:

  • 赋值运算符左侧必须引用一个存储位置
  • 赋值行为从右往左进行
1.1.2 其他赋值运算符:+=、-=、*=、/=、%=

说明:并非一定要使用这些组合形式的赋值运算符。但是,它们让代码更紧凑,而且与一般形式相比,组合形式的赋值运算符生成的机器代码更高效
注意:组合赋值运算符与普通赋值运算符的优先级相同,算术运算符的优先级低

1.2 加法运算符:+

说明:在C语言中,加法运算符用于加法运算,使其两侧的值相加
示例:

4 + 10

注意:
相加的值(运算对象)可以是变量,也可以是常量

1.3 减法运算符:-

说明:在C语言中,减法运算符用于减法运算,使其左侧的数减去右侧的数
示例:

10 - 4

注意:
+和-运算符都被称为二元运算符,即这些运算符需要两个运算对象才能完成操作

1.4 符号运算符:-和+

说明:减号还可用于标明或改变一个值的代数符号(改变一个数的正负号)
注意:

  • 以这种方式使用的负号被称为一元运算符,一元运算符需要一个运算对象
  • C90标准新增了一元运算符,它不会改变运算对象的值或符号

1.5 乘号运算符:*

说明:符号*表示乘法

1.6 除法运算符:/

说明:C使用符号/来表示除法
注意:

  • 整数除法和浮点数除法不同
  • 浮点数除法的结果是浮点数
  • 整数除法的结果是整数
  • 在C语言中,整数除法结果的小数部分被抛弃,这一过程被称为截断
    示例:
5 / 4
 - / 4

第一行的运算结果为1
第二行的运算结果为1.75

2逻辑运算符

分类:

  • 逻辑与
  • 逻辑或
  • 逻辑非

2.1 逻辑与:&&

说明:当且仅当左右两个关系表达式为True时,整个才为True

2.2 逻辑或:||

说明:当其中一个为True时,整个就为True

2.3 逻辑非:!

说明:将布尔值反转

3 其他运算符

分类:

  • sizeof运算符
  • 求模运算符
  • 递增运算符
  • 递减运算符
  • 逗号运算符

3.1 sizeof运算符

说明:sizeof运算符以字节为单位返回运算对象的大小

3.2 求模运算符:%

说明:

  • 求模运算符用于整数运算
  • 求模运算给出其左侧整数除以右侧整数的余数

3.3 递增运算符:++

说明:

  • 递增运算符执行简单的任务,将其运算对象递增1
  • ++出现在其作用的变量前面,这是前缀模式;++出现在其作用的变量后面,是后缀模式
  • 递增运算符的一个优点是,通常它生成的机器语言代码效率更高,因为它和实际的机器语言指令很相似

3.4 递减运算符:- -

说明:

  • 递减运算也执行简单的任务,将其运算对象递减1
  • - -出现在其作用的变量前面,这是前缀模式;- -出现在其作用的变量后面,是后缀模式

3.5 逗号运算符

说明:

  • 逗号运算符把两个表达式连接成一个表达式,并保证最左边的表达式最先求值
  • 逗号运算符扩展了for循环的灵活性,以便在循环头中包含更多的表达式
  • 逗号运算符并不局限于在for循环中使用,但是这是它最常用的地方

4 C按位运算符

说明:C提供按位逻辑运算符移位运算符
分类:

  • 按位取反
  • 按位与
  • 按位或
  • 按位异或
  • 左移
  • 右移

4.1 按位逻辑运算符

说明:4个按位逻辑运算符都用于整数数据

4.1.1 按位取反:~

说明:一元运算符~把1变为0,把0变为1
注意:该运算符不会改变原来对象的值(创建了一个可以使用或赋值的新值
示例:
~(10011010) // 表达式
(01100101) // 结果值

4.1.2 按位与:&

说明:

  • 二元运算符&通过逐位比较两个运算对象,生成一个新值
  • C有一个按位与和赋值结合的运算符:&=

示例:
(10010011) & (001111101) // 表达式
(00010001) // 结果值

4.1.3 按位或:|

说明:

  • 二元运算符|通过逐位比较两个运算对象,生成一个新值
  • C有一个按位或和赋值结合的运算符:|=

示例:
(10010011) | (001111101) // 表达式
(10111111) // 结果值

4.1.4 按位异或:^

说明:

  • 二元运算符^通过逐位比较两个运算对象,生成一个新值
  • C有一个按位异或和赋值结合的运算符:^=

4.2位移运算符

说明:位移运算符向左或向右移动位

4.2.1 左移:<<

说明:

  • 左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算符指定的位数
  • 左侧运算对象移出左末端位的值丢失,用0填充空出的位置
  • 该运算符产生一个新的位值,但是不改变其运算对象
    示例:
    (10001010) << 2 // 表达式
    (00101000) // 结果值
4.2.2 右移:>>

说明:

  • 右移运算符(>>)将其左侧运算对象每一位的值向右移动其右侧运算符指定的位数
  • 左侧运算对象移出右末端位的值丢失
    示例:
    (10001010) >> 2 // 表达式
    (00100010) // 结果值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值