操作符的分类:
-
算术操作符:+ , -, * ,/ , %(模);
-
移位操作符:计算机当中位运算速度>±*/
>> (右移) :如右移最高位补符号位
<<(左移)
逻辑移位:指逻辑左移和逻辑右移,移出的空位用0来补
算数移位:分有符号数和无符号数,无符号数等同于逻辑移位;对于有符号数,左移等同于逻辑左移,算术右移补的是符号位,正数补0,负数补1 -
位操作:&(按位与),(按位异或),|(按位或)
-
赋值操作符:= , +=,*=,-+,/=,%=,……=,!=(都自动强制类型转化)
-
单目操作符:!,-,+,&,sizeof,~(对一个数的二进制按位取反),–,++,*(简接访问操作符)?
-
关系操作符:== ,>= , <=, != ,>,<
-
逻辑操作符:&&(短路与),|| (短路或) (&&如果前面为假不去管后面的,||如果前面为真不管后面的),对于逻辑运算来说,他只认识0和1
-
逗号表达式:表达1,表达2,……,表达n; 整个表达式是最后一个表达式
int a = (10,20,30,40); // a=40; -
下标引用,函数调用和结构成员:[],(),.,->;
-
隐式类型转换:c的整形算术运算总是至少以缺省整形类型的精度进行的。为了获取这个精度,表达式中的字符和短整形操作数在使用之前被转换为普通整形,这种转换称为整形提升。
只要参与运算整形提升:有符号数补符号数,无符号数补0 -
优先级常规规律:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符