类型:
1,算术操作符
+ - * / %
注意:/两边是整数,结果也是整数,两边但凡有一个小数,结果就会变成相应的小数
2,移位操作符
>> <<
左(右)移操作符,移动的是二进制位
例:
int main()
{
int a=2;
int b=a<<1;
printf("%d",b);
return 0;
}
这里的int a=2,说明a以整型的方式存在内存中
00000000 00000000 00000000 00000010
<<的作用就是将这一串二进制数字整体左移一个单位,后面空出来的位置补个0就是了
00000000 00000000 00000000 00000100
新的一串就是b的值,也就是b等于十进制的4
所以输出的内容就是4
3,位操作符
& 按位与
^ 按位异或
| 按位或
4,赋值操作符
=
+=
-=
*=
/=
&=
^=
|=
>>=
<<=
举个例子a=a+5等效于a+=5
5,单目操作符
! 逻辑反操作,如c=1为真,则!c=0,说明!c为假
-
+
这里单纯为正负号,对单个数据操作,让它成为正负数
&
sizeof 操作数的类型长度,以字节为单位
~ 对一个数的二进制按位取反,取反的时候不论符号不论正负,直接将其二进制所有数字取反
--
++
前置和后置的区别
*间接访问操作符(解引用操作符)
(类型) 强制类型转换
比如int a=3.14会产生警告
但int a =(int)3.14就不会
6,原码,反码,补码
整数在内存中以补码形式储存,正数的原码反码补码都是相同的。
在负数中:
原码就是该数字转化成为二进制的一串数字
反码就是符号位不变,后面的所有数字取反
补码在反码的基础上加个1
7,逻辑操作符
&& 逻辑与
|| 逻辑或
这俩与高中的并且或者差不多,就是判断真假的一个东西,比如a=0表示假,b=3表示真,a&&b就表示假,a||b表示真,输出的结果分别是0,1
8,条件操作符
exp1 ? exp2 : exp3
先判断exp1是否成立,成立,计算exp2,不成立,计算exp3
9,逗号表达式
exp1,exp2,exp3,...expN
原则是从左往右依次计算,但计算结果是最后一个表达式的结果
10,下标引用、函数调用和结构成员
[] () . ->