操作符:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符
1.算术操作符
+ - * / %
%只对整数
/ : 8/5 以%d输出为 1;8/5 以%d输出不可确定,应以%f输出为1.6
2.移位操作符
内存中整数以补码的形式储存:正整数 补码=原码;负整数 原码除了符号位,其余0变1,1变0转换为反码,反码加1为原码。
如-1,原码 10000000 00000000 00000000 00000001
反码 11111111 11111111 11111111 11111110
补码 11111111 11111111 11111111 11111111
<< 左移 二进制序列 左丢位 右补0
如1: 00000000 00000000 00000000 00000001
左移1位:00000000 00000000 00000000 00000010
>> 右移:逻辑移位:不看符号位 左补0右丢
算术移位:坐补符号右丢
不同的编译器 处理不同
3.位操作符
& 按位与 |按位或 ^按位异或
与:有0则为0
或:有1则为1
异或:相同为0,相异为1 如:a^a=0;a^0=a
4.赋值操作符 =
复合赋值符 += 、-=、/=、*=、%=、<<=、>>=、&=、!=、^=、
5.单目运算符
!(否)-(负)+(正)sizeof(计算所占字节长度)~(按位取反)--、++、*(用于间接访问)(类型)(强制转换符)
a为变量,arr为数组
sizeof(a),sizeof(int),sizeof a,但sizeof int 不可以 省略括号,只能省略变量的。
附加数组知识:arr:数组元素地址,arr+1:跳过首元素地址,&arr:数组地址,&arr+1:跳过数组
数组不代表首元素地址:sizeof(arr),&arr
数组传参传的是首元素地址。
6.关系操作符:> >= < <= == !=
7.逻辑操作符:&& ||
8.条件操作符:exp1?exp2:exp3(条件exp1,成立2,不成立3)