8.C语言操作符详解
8.1算术操作符
+ - * / %
1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2.对于 / 操作如果两个操作数都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须为整数,返回的是整除之后的余数。
8.2移位操作符
<< 左移操作符
>> 右移操作符
移动的是二进制位,
000000000 000000000 000000000 000000000
1.算术右移
右边丢弃,左边补原符号位
2.逻辑右移
右边丢弃,左边补0
eg:
右移
int main()
{
int a = -1;
//内存中存的是补码
//10000000 00000000 00000000 00000001 - 原码
//111111111 111111111 111111111 111111110 - 反码
//111111111 111111111 111111111 111111111 - 补码
//算术移位
//11111111 11111111 11111111 11111111
int b=a>>1;
printf("%d\n",b);
return 0;
}
左移操作符
左边丢弃,右边补0
左移(右边补0)
int main()
{
int a =5;
int b =a<<1;
//00000000 00000000 00000000 00000101(正数原反补相同)
//00000000 00000000 00000000 00001010(右边补0)
}
8.3位操作符
& //按位与
| //按位或
^ //按位异或
操作数必须是整数
int main()
{
int a = 3;
int b = 5;
//int tmp = 0;//临时变量
//tmp = a;
//a = b;
//b = tmp;
//加减法-可能会溢出
//a=a+b;
//b=a-b;
//a=a-b;
//异或的方法
//a=a^b;
//b=a^b;
//a=a^b;
//第一次异或后中的,1对应的1,0,并且一个是1,另一个就是0;第一次异或中的0,说明两个数中这一位相同,所以不影响。
return 0;
}
8.4赋值操作符
=
8.5复合赋值符
+=
*=
-=
、
/=
%=
>>=
<<=
&=
|=
^=
8.6单目操作符
!逻辑反
-负值
+正值
&取地址
sizeof操作数类型长度(以字节为单位)
~对一个数的二进制按位取反
- - 前置,后置- -
++前置,后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换
8.7逻辑操作符
&& 逻辑与
| | 逻辑或
8.8逗号表达式
exp1,exp2,exp3,expn
从左往右依次执行,整个表达式是最后一个表达式的结果。