C语言操作符

算数操作符

+ - * / %
  1. 对于+ - * /的操作数可以为整数,也可以是浮点数。
  2. 对于 / 操作符,如果两个操作数均为整数,则进行整数除法;如果其中一个操作数为浮点数,则进行浮点数除法。
  3. 对于%操作符的操作数需为整数,计算后返回为两个数整除之后的余数。

移位操作符

左移操作符<<

将操作数在内存储存的补码进行向左移位,移位方式左边抛弃、右边补0。

右移操作符>>

右移运算分为两种:

  1. 逻辑移位:左边用0填充,右边丢弃。
  2. 算术移位:左边用原该值的符号位填充,右边丢弃。
    大部分的编译器采取算数移位的方式。
  • 移位操作符的操作数不能是负数。

赋值操作符

对一个变量进行赋值,需要赋值的变量为左操作数,赋的值为右操作数。

符合赋值符

很多运算符都可以写成复合的效果:+= 、 -= 、 *= 、 /= 、 %= 、 >>= 、 <<= 、 &= 、 |= 、 ^=

单目操作符

操作符作用与含义
!逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
- -前置、后置- -
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换

关系操作符

操作符作用与含义
>
>=
<
<=
!=用于测试“不相等”
==用于测试“相等”

逻辑操作符

操作符作用与含义
&&逻辑与
||逻辑或
  • 几个表达式由逻辑与相连接时,如果第一个式子为真,则整个表达式为真,且之后的式子不进行计算
  • 几个表达式由逻辑或相连接时,如果第一个式子为假,则整个表达式为假,且之后的式子不进行计算

条件操作符

exp1 ? exp2 : exp3
唯一的一个三目操作符,当表达式exp1为真时,进行表达式exp2,反之进行表达式exp3。

逗号表达式

一连串有逗号连起来的表达式,计算时从左到右,整个表达式的结果是最后一个表达式的结果。

下标引用、函数调用和结构成员

  1. [ ]下标引用操作符
    包含两个操作数,一个是数组名,一个是索引值,即数组下标。
  2. ( )函数调用操作符
    接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数是传递给函数所需要的参数。
  3. 访问结构体成员
    .结构体.成员名
    ->结构体指针->成员名

操作符优先级

  • 以下摘自《C和指针》
操作符描述用法示例结果类型结合性是否控制求值顺序
( )聚组(表达式)与表达式同N/A
( )函数调用rexp(rexp,…,rexp)rexpL-R
[ ]下标引用rexp[rexp]lexpL-R
.访问结构成员lexp.member_namelexpL-R
->访问结构指针成员rexp->member_namelexpL-R
++后缀自增lexp++rexpL-R
- -后缀自减lexp- -rexpL-R
!逻辑反! rexprexpR-L
~按位取反~rexprexpR-L
+单目,表示正值+rexprexpR-L
-单目,表示负值-rexprexpR-L
++前缀自增++lexprexpR-L
- -前缀自减- -lexprexpR-L
*间接访问*rexplexpR-L
&取地址&lexprexpR-L
sizeof取其长度,以字节表示sizeof rexp sizeof(类型)rexpR-L
(类型)类型转换(类型)rexprexpR-L
*乘法rexp * rexprexpL-R
/除法rexp / rexprexpL-R
%整数取余rexp % rexprexpL-R
+加法rexp + rexprexpL-R
-减法rexp - rexprexpL-R
<<左移位rexp << rexprexpL-R
>>右移位rexp >> rexprexpL-R
>大于rexp > rexprexpL-R
>=大于等于rexp >= rexprexpL-R
<小于rexp < rexprexpL-R
<=小于等于rexp <= rexprexpL-R
==等于rexp == rexprexpL-R
!=不等于rexp != rexprexpL-R
&位与rexp & rexprexpL-R
^位异或rexp ^ rexprexpL-R
|位或rexp | rexprexpL-R
&&逻辑与rexp && rexprexpL-R
||逻辑或rexp || rexprexpL-R
? :条件操作符rexp ? rexp : rexprexpN/A
=赋值rexp = rexprexpR-L
+=以…加rexp += rexprexpR-L
-=以…减rexp -= rexprexpR-L
*=以…乘rexp *= rexprexpR-L
/=以…除rexp /= rexprexpR-L
%=以…取模rexp %= rexprexpR-L
<<=以…左移lexp <<= rexprexpR-L
>>=以…右移lexp >>= rexprexpR-L
&=以…与lexp &= rexprexpR-L
^=以…异或lexp ^= rexprexpR-L
|=以…或lexp |= rexprexpR-L
,逗号rexp, rexprexpL-R
  • lexp表示左值表达式,rexp表达右值表达式。
  • 左值意味着一个位置,而右值意味着一个值。所以,在使用右值的地方也可以使用左值,但是使用左值的地方不能使用右值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值