操作符:
算术操作符
"/":如果两个操作数都为整数,执行整数除法;有浮点数就为浮点数除法。
**"%"**两个数必须为整数。
①移位操作符:将一个数的二进制位右移或左移给定的位数 >>x:左移x个位数 <<x:右移x个位数
int a = 5;
int b = a << 1;//二进制数右移一位
printf("%d",b);//得到10
右移包括算数右移和逻辑右移
算术右移:右边丢弃,左边补原符号位(大部分都是算术右移)
逻辑右移:右边丢弃,左边补0
二进制数
原码
反码
补码:内存中存放。
32位二进制数,最高位为‘0’,表示正数,最高位为‘1’,表示负数。
对于正数而言,原码,反码,补码相同
对于负数而言,原码为本来得出的值,反码为除了最高位,对原码按位取反,补码=反码+1。
例如:
-2:
原码:10000000000000000000000000000010
反码:11111111111111111111111111111111101
补码:11111111111111111111111111111111110
②位操作符(二进制数):
&:按位与 同为1才为1
^:按位异或 相异为1,相同为0;
|:按位或 只要有1就为1
③赋值:
a=a+10和a+=10完全相同。
④按位取反(二进制数):0→1 1→0
~a:对a进行按位取反
⑤后置++:先使用,再++;
前置++;先++,后使用;
int a = 3;
int b = 0;
int c = 0;
b = a++;//将a原本的值给b,a再++
printf("%d",b)b=3
c = ++a;//将a++,再将值给c
printf("%d",c) c=5
⑥强制类型转换
例:将5.1强制转换成整型
int a =(int)5.1;
printf("%d ",a);
⑦三目操作符:
max=(a>b?a:b)
成立:max=a;不成立;max=b;
⑧逗号表达式:
a=(…,…,…):从左向右依次计算,最后一式结果赋给a.