操作符和表达式

一,操作符

1.算术操作符

常见算术操作符:+   -   *  /   %

除了%操作符,其他几个操作符既适用于浮点型,也适用于整数类型,%操作符两边只能为整数类型

2.移位操作符

<< :左移操作符        >>: 右移操作符   移动的是二进制位

整数的二进制表示有3种:原码,反码,补码

正的整数的原,反,补码相同

负的整数需要计算

下面以7和-7举例

整数在内存中存储的是补码,偏移码就是补码符号位取反

左移操作符:左边丢弃,右边补零

右移操作符:逻辑移位:右边丢弃,左边补零  算术移位:右边丢弃,左边补原符号位

3.位操作符

比较的是二进制位

&(按位与):有0为0,全1得1

|(按位或):有1为1,全0得0

^(按位异或):相同为0,相异为1

4.赋值操作符

=

复合赋值符

+=           -=          *=          /=           %=

例:

a+=b  等价于a=a+b

5.单目操作符

!:对它的操作数执行逻辑反操作

~:对整型类型的操作数进行求补操作,原先的1变为0,0变为1

++:前置++,先++,后使用     后置++,先使用,后++

sizeof:计算变量所占内存空间大小,单位是字节;计算类型所创建的变量占据空间的大小

6.逻辑操作符

&&:逻辑与

表达式1 && 表达式2  如果表达式1和2都为真,则整个表达式为真,1个为假则整个为假

||:逻辑或

表达式1 || 表达式2   如果表达式1和2中有一个为真,则整个表达式为真

7.条件操作符

表达式1 ? 表达式2:表达式3

如果表达式1的值为真,则执行表达式2的值,否则执行表达式3的值

8.逗号操作符

用逗号隔开的表达式,从左到右依次执行,整个逗号表达式的值就是最后那个表达式的值

二,表达式求值

(1)隐式类型转换

C的整型算术运算总是至少以缺省整型类型的精度来进行的,为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

整型提升的规则:无符号位,高位补零。 有符号位,高位补0/1,看符号位。

(2)算术转换

如果进行计算时,两个操作数类型不同,则需要转为同一类型。一般是由低操作符转换为高操作符

(3)操作符的优先级

操作符描述用法示例结合性
()函数调用rexp(rexp,..rexp)L-R
[ ]下标引用rexp[rexp]L-R
.访问结构体成员lexp.member_nameL-R
->访问结构指针成员rexp->member_nameL-R
++后缀自增lexp++L-R
--后缀自减lexp--L-R
!逻辑反! rexpR-L
~按位取反~rexpR-L
+单目运算符,正值+rexpR-L
-单目运算符,负值-rexpR-L
++前缀自增++lexpR-L
--前缀自减--lexpR-L
*间接访问*rexpR-L
&取地址&lexpR-L
sizeof长度计算sizeof()R-L
(类型)强制类型转换(类型)rexpR-L
*乘法rexp*rexpL-R
/除法rexp/rexpL-R
%整数取余rexp%rexpL-R
+加法rexp+rexpL-R
-减法rexp-rexpL-R
<<左移位rexp<<rexpL-R
>>右移位rexp>>rexpL-R
>大于rexp>rexpL-R
>=大于等于rexp>=rexpL-R
<小于rexp<rexpL-R
<=小于等于rexp<=rexpL-R
==等于rexp==rexpL-R
!=不等于rexp!=rexpL-R
&按位与rexp & rexpL-R
^按位异或rexp ^ rexpL-R
|按位或rexp | rexpL-R
&&逻辑与rexp && rexpL-R
||逻辑或rexp || rexpL-R
?  :条件操作符rexp?rexp:rexpN/A
=赋值lexp = rexpR-L
+=加后赋值lexp+=rexpR-L
-=减后赋值lexp-=rexpR-L
*=乘后赋值lexp*=rexpR-L
/=除后赋值lexp/=rexpR-L
%=取模后赋值lexp%=rexpR-L
<<=左移后赋值lexp<<=rexpR-L
>>=右移后赋值lexp>>=rexpR-L
&=按位与后赋值lexp&=rexpR-L
^=按位异或后赋值lexp^=rexpR-L
|=按位或后赋值lexp|=rexpR-L
,逗号表达式rexp,rexpL-R

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值