逻辑运算符和关系运算符

- 赋值运算满足右结合律
int ival
ival=jval=0;
递增和递减运算符
int i=0,j;
j=++i;//j=1,i=1:前置版得到递增之后的值
j=i++;//j=1,i=2:后置版得到递增之前的值
条件运算符
cond ? exprl:expr2;
- 当条件运算符的两个表达式都是左值或者能转换成同一种左值类型时,运算结果就是左值,否则运算结果是右值。
位运算符

- 比较简单省略
命名的强制类型转换
- 形式如下:
cast-name<type>(expression);
cast-name是static_cast,dynamic_cast,const_cast和reinterpret_cast中的一种 -
static_cast
- 只要不包含底层const,都可以使用static_cast。
void *p=&d;//正确:任何非常量对象都能存入void*
doudle *p=const_cast<doudle*>(p);
const_cast
- const_cast 只能改变对象的底层const,只有const_cast能改变常量属性。
const char *pc;
char *p=const_cast<char*>(pc);//正确:但是通过p写值是未定义的行为
参考:C++primer 第五版
网友评论