| 类别 |
名称 |
符号 |
对象数目 |
运算规则 |
运算对象 |
运算结果 |
优先级别 |
结合性 |
| 强制运算符 |
圆括号 |
() |
单目 |
参数表 |
任何类型 |
任何类型 |
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。