一、操作符
(1)算数操作符
1>对于/操作符如果两个操作数都为整数,执行整数除法。
2>而只要有浮点数就执行浮点数除法;
3>%叫做取模运算符,或者叫做取余运算符;
%操作符的两个操作数必须为整数,返回值为整除之后的余数
4>int类型在内存中占有4个字符,即32bits。且int整型,有正负之分
(2)移位操作符
1>数据在内存里面都是以二进制的形式进行保存-----------0,1代码。整数也不例外,所以 必须知道一个整数在内存中如何保存的
2>整数所对应的二进制:4个bytes=32bits
3>例如147--------二进制10010011
原码 00000000 00000000 00000000 10010011
整数在计算机中储存的是补码,正整数的原码、补码和反码是相同的。
反码 00000000 00000000 00000000 10010011
补码 00000000 00000000 00000000 10010011
4>负整数的原码补码和反码是不相同的
反码:符号为不变,其他位取反
补码:反码+1
c语言在显示的是十六进制
5>左(右)移运算
左移 << 左边丢弃,右边补0 右移>>
移位操作符移动二进制位,左移操作相当于*2,右移操作相当于/2
右移运算:①算数移位:右边丢弃,左边补符号位(我们研究的)
②逻辑移位:右边丢弃,左边补0
警告:对于移位运算符,不要移动负数位,这个是标准未定义的
k++ | ++k | |
两者的区别 | 先使用,再自增 | 先自增,再使用 |
(3)位操作符
1>. & 按位与
按位与& | |||
1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 0 | 0 | 0 |
2> | 按位或
按位或| | |||
1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 1 | 0 |
3> ^ 按位异或
按位异或^. | |||
1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 |
(4)赋值操作符
赋值操作符可以让你对自己声明的变量重新赋值。
x = y = z + 1; //连续赋值
但是,不建议连续使用,这样代码的可读性比较差,应该这样写:
y=z+1;
x=y;
复合赋值运算符:
+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=
(5)单目操作符
在使用时只有一个操作数
运算符 | 含义 |
! | 逻辑非运算符 |
++ | a++,相当于a=a+1 |
-- | a--,相当于a=a-1 |
& | 取地址 |
+ | 正值 |
- | 负值 |
sizeof | 操作数的类型长度 |
* | 间接访问操作符 |
- | 对一个数的二进制按位取反 |
(类型) | 强制类型转换 |
(6)关系操作符
<,>,<=,>=,==(等于),!=(不相等)
(7)逻辑操作符
&& 逻辑与
|| 逻辑或