文章目录
1、引言
今天学习的内容是C语言中的操作符
2、操作符分类
2.1、算数操作符
1、算数操作符中的“%”的左右两端必须是整数,求得的是余数。余数的范围是1~被除数。
2、算数操作符中的“/”,求得的是两数相除的商,当“/”除号的两端都是整数的时候,执行的是整数的除法,两段只要有一个是浮点数,执行的就是浮点数除法(即当10/3=3;10/3.0=3.3333无限循环)。
2.2、移位操作符
移位操作符的操作对象只能是整数
1、左移操作符,把a在内存中存储的二进制补码向左移动两位(即把a的补码向左移动两位),左边抛弃,右边补0
int main()
{
int a = 5;
int b = a<<2;
printf("%d\n",b);
return 0;
}
2、右移操作符:
Ⅰ、算数右移:(右边丢弃,左边补原来的符号位)
Ⅱ、逻辑右移:(右边丢弃,左边补0)
tips:到底是算数右移动,还是逻辑右移,具体要看编译器,常见的编译器都是算数右移动
2.3、位操作符
位操作符操作对象只能是整数
1、& – 按(2进制)位与:
2、| – 按(2进制)位或:
3、^ – 按(2进制)位异或
Tips:
1、任何数字和 0 异或都是它本身
2、两个相同的数字异或得到的结果是 0
2.4、复合赋值操作符
1、+= / -= (加等/减等)
例如a+=10可以看做 a=a+10,a-=10可以看做a=a-10
2、这些复合操作符的本质就是将两个操作符的功能叠加起来
2.5、单目操作符
1、!逻辑反操作
2、& 取地址操作符
3、sizeof 操作数的类型长度(以字节为单位)
4、~ 对一个数的二进制按位取反(用法如下)
int main()
{
int a = 0;
// ~ 按(内存中补码的2进制)位取反
printf("%d\n", ~a);
return</