运算符及其优先级
1. 赋值运算符 =
a.赋值运算的左值必须是可修改的,被const修饰的变量不行
b.多个赋值操作符,各变量必须具有共同的数据类型
2. 自增自减运算符 ++ –
a.++i 先取地址,内容+1,存放在寄存器中,先变后用
i++ 先去地址,存放在寄存器中,再增在内存中的地址,先用后变
b.自增自减只能用于变量,不能用于常量与表达式
c.后缀++,–只能放于等号的右边
3. 位运算符
a.按位与(&):仅当两位都为1,结果为1
按位或(|):仅当两位都为0,结果为0
取反(~):每位取反,单目运算
按位异或(^):两位不同时,结果为1
b.给定一个整数,判断其是否为2的整数次幂?
if(n>1 &&((n&(n-1))==0)//((n&(n-1))==0)判断n的二进制是否只有一个1
cout<<"YES";
c.异或运算性质:两个相同的数异或结果为0,且满足交换律
A^B ^C ^B=A ^C
此性质常用于寻找数成对出现时缺失的某一个数
交换两个变量的值,不借使用第三方变量
a=a^b;
b=a^b;
a=a^b;
4. 移位运算符
优先级:~运算符>移位运算符>与、或、异或运算符
c++基本类型的类型转换
1. 赋值转换
int a=3.14;//a=3
int *ip;ip=0;//ip是一个空指针
2. 表达式转换
a.整型提升,表达式时提升为int类型
b.运算时,表达力低的类型转化为表达力高的类型
3. 显示转换 用圆括号实现
注:无符号转为有符号时 高位补1