首页 > 代码库 > C/C++运算符及其优先级
C/C++运算符及其优先级
1、自增自减
(1)前置运算:”先变后用“ 如++i。
后置运算:”先用后变“ 如i--。
比如:
int i = 5。 y1 = ++i; y2 = i++;
结果:y1 = 6;y2=6;i=7.
(2)前置和后置另一个差别:前置能够用在等号的两边;而后置仅仅能位于等号的右边。
这是由于前置返回操作数本身,后置返回的是一个暂时变量。
int mian() { int a = 3; a += (++a); //a=7 a += (a++); //a=16 (++a) += (a++); //a=35 (a++) += a; //不对 }
2、关系与逻辑运算符
(1)关系运算符(四种)和逻辑运算符(三种):返回的是布尔类型的结果
关系运算符,比如:<(小于号),>(大于号),<=(小于或等于),>=(大于或等于),!=(不等于)
逻辑运算符,比如:!(非),&&(且),||(或)
(2)关系的优先级 > 逻辑运算符
3、位运算
(1) 共六种:&、|、^、~、《(左移)、》(右移)
异或^:仅当两位不同样时,结果才是1。
(2)进制转换
[十进制转二进制]
正十进制转二进制:除二取余倒排序。一直除到商等于1或0时为止.
所以。52相应的二进制数是:110100。
负整数转换为二进制:取反加一
解释:将该负整数相应的正整数先转换成二进制,然后对其“取补”,再对取补后的结果加1就可以。
比如要把-52换算成二进制:
1.先取得52的二进制:00110100
2.对所得到的二进制数取反:11001011
3.将取反后的数值加一就可以:11001100
即:(-52)10=(11001100)2
[十进制转十六进制]:除16取余倒排序。
十六进制数的表示:前缀法:0xA1
后缀法:A1H
[二进制和十六进制转十进制]
算法一样。
都是 5*16^1+3*16^0 这样的形式
(3)移位运算
规则:移位后,丢弃移出去的数,移后空白位补位规则例如以下:
int 左移低位补零。右移高位补符号位
unsighed int 低位高位都补零
4、类型转换
(1)赋值转换:将一种类型的值赋给还有一种类型的变量。
int a = 3.14。
(2)表达式转换
a、整型提升
b、运算时转换
同一类型的有符号和无符号类型所占的内存空间同样。
(3)显示转换
(4)其它转换
5、运算优先级
(1)括号、下标和结构体成员优先级最高
(2)单目高于双目;算术双目高于其它双目
(3)算术>移位>关系>位运算>逻辑
(4)三目运算仅仅有一个逗号,低于逻辑
(5)赋值比”,“高。
C/C++运算符及其优先级