操作符的分类:
1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.复合操作符
6.关系操作符
7.逻辑操作符
8.单目操作符
9.条件操作符
10.逗号表达式
11.下标引用,函数调用,结构成员
算术操作符
种类 注意事项
+
/ 除数不能为 0
% 操作数必须是两个整数
提醒:在进行算术运算时,要注意运算过程中类型的隐式转换
移位操作符
种类 作用 注意事项
<< 按二进制左移 ,高位抛弃,低位补0 类似于*2^n
逻辑右移:按二进制右移,低位抛弃,高位补0; 类似于/2^n,一般用的是算术右移
算术右移:按二进制右移,低位抛弃,高位补符号位(0或1)
负数在计算机中按补码存放
提醒:移位操作相比于普通的算术操作,运算时间会短一些,但是在写代码的过程中,算术运算的优势体现的更明显一些,首先是代码的可读性强,其次是编译器会进行算术运算到移位操作的自动转化优化,因此无需再担心运算时间的问题。
位操作符
种类 作用 注意事项
& 按二进制进行与运算
I 按二进制进行或运算
^ 按二进制进行异或运算 a ^ b ^ a == a
赋值操作符
种类 注意事项
= 注意赋值类型
复合操作符
种类 注意事项
+=
-=
*=
/=
%=
a += b等价于a = a + b;
=
<<=
a >> b等价于a = a >> b;
&=
I=
^=
a & b等价于a = a & b;
关系操作符
种类 注意事项
<
=
<=
==
!=
==不要与=混淆
!= 是不等于的意思
提醒:关系操作符时常与逻辑操作符搭配,如 a > 1 && a < 10
但是不能写成 1 < a < 10
逻辑操作符
种类 作用 注意事项
&& 按逻辑与进行判断 区分位操作符&
II 按逻辑或进行判断 区分位操作符 I
提醒:逻辑操作符又称作短路操作符,如果&&和II的第一个操作数能够确定整体的值,则第二个操作数不再判断。
条件操作符
种类 作用 注意事项
exp1 ? exp2 : exp3 exp1成立则返回exp2,否则返回exp3 条件操作符又称作三目操作符
条件操作符的优先级最低
提醒:上述条件操作符等价于:
if (exp1) {
return exp2;
} else {
return exp3;
}
逗号表达式
种类 注意事项
exp1, exp2, exp3, …, expn 从左到右依次执行,但整个表达式的结果为最后一个表达式的结果expn
提醒:逗号表达式的作用可能不是很明显,比如看下列代码
int a = 1;
int b = a;
if (a > 0) {
…
}
用逗号表达式来表示:
int a, b;
if (a = 1, b = a, a > 0) {
…
}
其实还是第一段代码比较好
下标引用,函数调用,结构成员
种类 注意事项
[ ] arr[index] index >= 0
() Fac()
()内存放参数,区别形参和实参
.
-> 直接访问结构体成员:student.name
间接访问结构体成员:student -> name