目录
一、常见操作符汇总
算术操作符 | + 、- 、* 、/ 、% |
移位操作符 | << >> |
赋值操作符 | = 、+= 、 -= 、 *= 、 /= 、%= 、>= 、&= 、|= 、^= |
单⽬操作符 | !、++、--、&、*、+、-、~ 、sizeof |
关系操作符 | > 、>= 、< 、<= 、 == 、 != |
逻辑操作符 | && 、|| |
条件操作符 | ? : |
位操作符 | & | ^ ~ |
逗号表达式 | , |
下标引⽤ | [ ] |
函数调⽤ | ( ) |
二、重要操作符详解
2.1移位操作符
- 左移操作符:<< 移位规则:左边抛弃、右边补0
- 右移操作符:>>
移位规则:- 逻辑右移:左边⽤0填充,右边丢弃
- 算术右移:左边⽤原该值的符号位填充,右边丢弃
- 注意:移位操作符的操作数只能是整数。
2.2位操作符
计算机内部数据都采用二进制方式存储,嵌入式常常会操作寄存器的某一位,位操作在嵌入式开发中十分常见。
- 按位与&:0&任何数都为0,1&任何数都为它本身
- 按位或|: 1|任何数都为1
- 按位异或^:一个数^它本身=0;一个数^0=它本身
- 按位取反~:
注意:它们的操作数必须是整数。
典型应用
/*将15⼆进制序列的第5位修改为1,然后再改回0*/
#include <stdio.h>
int main()
{
int a = 12;
a = a | (1<<4);
printf("a = %d\n", a);
a = a & ~(1<<4);
printf("a = %d\n", a);
return 0;
}
/*求⼀个整数存储在内存中的⼆进制中1的个数*/
#include <stdio.h>
int main()
{
int num = -1;
int i = 0;
int cnt = 0;//计数
for(i=0; i<32; i++)
{
if( num & (1 << i) )
cnt++;
}
printf("⼆进制中1的个数 = %d\n",cnt);
return 0;
}
2.3逗号表达式
从左向右依次执⾏,整个表达式的结果是最后⼀个表达式的结果。
2.4特殊操作符
- 下标引⽤操作符:[ ]
- 函数调⽤操作符:( )