C语言运算符表备忘录

C语言运算符表备忘录
类别名称符号对象数目运算规则运算对象运算结果优先级别结合性
强制运算符圆括号()单目参数表任何类型任何类型15自左向右
下标运算符方括号[]单目数组下标任何类型任何类型15自左向右
成员运算符圆点·单目结构成员符任何类型任何类型15自左向右
成员运算符左箭头<-单目共用成员符任何类型任何类型15自左向右
算术运算符+单目取原值整型或实型整型或实型14自右向左
算术运算符-单目取负值整型或实型整型或实型14自右向左
算术运算符+双目相加取和整型或实型整型或实型12自左向右
算术运算符-双目相减取差整型或实型整型或实型12自左向右
算术运算符*双目相乘取积整型或实型整型或实型13自左向右
算术运算符/双目相除取整商整型或实型整型或实型13自左向右
算术运算符%双目整除取余整型整型13自左向右
算术运算符增1(前缀)++单目先加1整字指变数同左14自右向左
算术运算符增1(后缀)++单目后加1整字指变数同左14自右向左
算术运算符减1(前缀)--单目先减1整字指变数同左14自右向左
算术运算符减1(后缀)--单目后减1整字指变数同左14自右向左
关系运算符小于<双目真为1假为0整实和字符整型逻辑值10自左向右
关系运算符小于或等于<=双目真为1假为0整实和字符整型逻辑值10自左向右
关系运算符大于>双目真为1假为0整实和字符整型逻辑值10自左向右
关系运算符大于或等于>=双目真为1假为0整实和字符整型逻辑值10自左向右
关系运算符等于=双目真为1假为0整实和字符整型逻辑值9自左向右
关系运算符不等于!=双目真为1假为0整实和字符整型逻辑值9自左向右
逻辑运算符逻辑非单目逻辑值取反数值或字符整型逻辑值14自右向左
逻辑运算符逻辑与&&双目有假为假数值或字符整型逻辑值5自左向右
逻辑运算符逻辑或||双目有真为真数值或字符整型逻辑值4自左向右
赋值运算符赋值=双目等于任何类型表达式2自右向左
反赋值运算加赋值+=双目和入第一数数值型数值型2自右向左
反赋值运算减赋值-=双目差入第一数数值型数值型2自右向左
反赋值运算乘赋值*=双目积入第一数数值型数值型2自右向左
反赋值运算除赋值/=双目商入第一数数值型数值型2自右向左
反赋值运算模赋值%=双目余入第一数整型整型2自右向左
逗号运算符逗号双目分隔表达式表达式表达式类型1自左向右
条件运算符条件?:三目条件判断表达式表达式类型3自右向左
长度运算符长度sizeof单目测试长度说明符/变量整型14
位运算符位非单目逻辑位取反整型整型14自右向左
位运算符位与&双目有假为假整型整型8自左向右
位运算符位或|双目有真为真整型整型6自左向右
位运算符按位加^双目同假异真整型整型7自左向右
位移位运算左移<<双目向左移位整型整型11自左向右
位移位运算右移>>双目向右移位整型整型11自左向右
位自反赋值位与赋值&=双目同反赋值整型整型2自右向左
位自反赋值位或赋值|=双目同反赋值整型整型2自右向左
位自反赋值按位加赋值^=双目同反赋值整型整型2自右向左
位自反赋值位左移赋值<<=双目同反赋值整型整型2自右向左
位自反赋值位右移赋值>>=双目同反赋值整型整型2自右向左

原文链接:http://i.cn.yahoo.com/gwutf/blog/p_26/

===============================================================================

C语言位运算符的使用

一、按位与运算符&
参与运算的两个量按照对应的位进行与运算,且
0&0→0, 0&1→0, 1&0→0, 1&1→1

利用按位与运算,我们可以方便地实现清零或取一个数的某些位。
例如 取出a的低4位,将b的低4位清零。
0x0F&a 取出a的低4位
0xF0&b 将b的低4位清零
这种方法称为“屏蔽方法”,其中0x0F、0xF0称为屏蔽字。

二、按位或运算符|
参与运算的两个量按照对应位进行或运算,且
0|0→0, 0|1→1, 1|0→1, 1|1→1

利用按位或运算,我们可以方便地实现置位或组合新值。


例如 将整数i(2字节)的低字节全置为1。
0xff|i
例如 将整数a的低字节和整数b的高字节组成一个新值。
先取出a的低字节:0xff&a (或0x00ff&a)
再取出b的高字节:0xff00&b
然后组成新值: 0xff&a|0xff00&b

三、按位异或运算符^
参与运算的两个量按照对应的位进行异或运算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0

此外,一个数与0异或仍保持不变,即a^0=a
一个数与自己异或结果为0,即a^a=0

四、按位取反运算符~
这是位运算符中唯一的单目运算符,即将数的每一位取反(0→1,1→0)。


例如 将整数a的最低位清零
0xfffe&a
对于有的大中型计算机,整型占4个字节,如将上式直接挪用过去,则将丢失a的两个高字节,必须改为
0xfffffffe&a
因此程序通用性降低。若改为下面形式则通用:
~1&a

五、左移运算符<<
将一个数的各二进制位全部左移若干位。左移后右边补入0,左边移出的位舍弃。


例如 若a=3,则b=a<<1,b为6
c=b<<1,c为12
即左移一位相当于乘以2。用这种方式实现乘法运算比其它方式快得多,但只适用于左边没有1被移出的情况。例如
a=0x83,则a<<1 结果为6

六、右移运算符>>
将一个数的各二进制位全部右移若干位。右移后,右边移出的位被舍弃,左边补入的位分两种情况:
(1) 对无符号数,左边补入0
(2) 对有符号数,若符号位为0(正数)则补入0;若符号位为1(负数)则补入1。

转载于:https://www.cnblogs.com/smartsmart/archive/2012/02/15/2352536.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值