Part 1 算术操作符
+ - * / %
(1) +
c = a+b; // a=2 ,b=3 ,c=5
// a=2.0 ,b=3.0 ,c=5.0
(2) -
c = a-b; // a=5 ,b=1 ,c=4
// a=5.0 ,b=.0 ,c=4.0
(3) *
c = a*b; // a=2 ,b=3 ,c=6
// a=2.0 ,b=3.0 ,c=6.0
(4) /
c = a/b; // a=3 ,b=2 ,c=1
// a=3.0 ,b=2 ,c=1.5
注意:对于”/”操作符,若两个数都是整数,执行整数除法,若出现浮点数,执行浮点数除法。
(5) %
c = a%b; // a=6 ,b=4 ,c=2
注意:对于”%”操作符,操作数必须为整数,返回除整之后的余数。
Part 2 移位操作符
<< 左移操作符
>> 右移操作符
(1) <<
移位规则:
左边抛弃,右边补0,符号不变。
int a = 5;
a = a<<1; // a=10
// 00000000 00000000 00000000 00000101
// 00000000 00000000 00000000 0000101
// 00000000 00000000 00000000 00001010
int a = -5
a = a<<1; // a=-10
// 10000000 00000000 00000000 00000101
// 10000000 00000000 00000000 0000101
// 10000000 00000000 00000000 00001010
(2) >>
移位规则:
- 逻辑移位:左边用0填补,右边丢弃。
- 算术移位:左边用原值的符号位填补,右边丢弃。
int a = -10;
a = a>>1;
// 10000000 00000000 00000000 00001010 逻辑移位
// 0000000 00000000 00000000 00000101
// 00000000 00000000 00000000 00000101 a=5
// 10000000 00000000 00000000 00001010 算术移位
// 0000000 00000000 00000000 00000101
// 10000000 00000000 00000000 00000101 a=-5
Part 3 位操作符
& | ^
注意:位操作数必须是整数。
(1) & // 按位与,有假为假
(2) | // 按位或,有真为真
(3) ^ // 按位异或,同为1,异为0
int a = 1;
int b = 2;
// a&b=0
// a|b=3
// a^b=3
Part 4 赋值操作符
(1) 单个赋值符 =
int weight = 120;
weight = 90 ; // 使用赋值操作符赋值
(2) 复合赋值符
+= -= *= /= %= >>= <<= &= |= ^=
int a = 10;
a = a+2; // a=12
a += 2; // a=12 复合赋值
Part 5 单目操作符
单目操作符只有一个操作数
! - + & sizeof ~ – ++ * (类型)
(1) ! 逻辑反操作
int a = 1;
a = !a; // a=0,为假
int a = 0;
a = !a; // a=1,为真
(2) - 负值
(3) + 正值
(4) & 取地址
printf("%p",&a); // 以满地址形式输出
printf("#%p",&a); // 0x+地址
int arr[10] = {0};
printf("%p",&arr); // 0024F914 取数组地址
printf("%p",&arr+1); // 0024F93C 跳过整个数组取址
printf("%p",arr); // 0024F914 取数组首元素地址
printf("%p",arr+1); // 0024F918 跳过首元素,取下一个元素地址
(5) sizeof 操作数的类型长度(以字节为单位)
int a = 1;
printf("%d ",sizeof(a)) // 4
int arr[10] = {0};
printf("%d",sizeof(arr+0)); // 4 数组首元素大小
printf("%d",sizeof(arr)); // 40 数组大小
(6) ~ 对一个数的二进制按位取反
(7) – 前置、后置自减
- –a 先减,再使用
- a– 先使用,再减
(8) ++ 前置、后置自增
(9) * 间接访问操作符(对指针进行解引用操作)
(10) (类型) 强制类型转换
float f = 3.14f;
int a = 0;
a = (int)f; // a=3
Part 6 关系操作符
判断关系
> >= < <= != ==
PS:”==” 用于判断是否相等,与 “=” 区分开
Part 7 逻辑操作符
&& ||
(1) && 逻辑与,两个操作数都为真,结果为真
(2) || 逻辑或,两个操作数都为假,结果为假
PS : 注意区分 && 和 & 、|| 和 |
1 & 2 = 0
1 && 2 = 1
1 | 2 = 2
1 || 2 = 1
Part 8 条件操作符
exp1 ? exp2 : exp3
判断条件 exp1 ,条件满足执行 exp2 ,条件不满足执行 exp3 。
int a = 2;
int b = 0;
b = (a>5)?(3):(-3); // b=-3
初期学习,先小结一下基础的操作符使用。