|
Posted on
2010-08-17 22:21
KurtWang
阅读( 207)
评论()
编辑
收藏
举报
- 位操作符:~求反,&位与,|位或,^位异或
- 位异或,b1^b2,b2中的1,b1中对应的那一位取反,b2中的0,b1中对应的那一位不变
- 自增和自减:只有在必要时才使用后置操作符(i++,i--),推荐使用++i, –i
- 前置操作需要做的事情更少,只需加1后返回加1的结果即可,不需要保存原来的值。
- sizeof
- sizeof对char结果是1
- 对引用类型做sizeof,将返回此类型对象所需的内存空间
- 对指针做sizeof,返回内存指针所需的内存大小
- 对数组做sizeof,等于将元素类型做sizeof的结果乘以数组元素的个数
- 动态创建对象的默认初始化
int * pi = new int; //pi points to an unintialized int
int * pi = new int(); //pi points to an int value-initialzed to 0
- delete:只能释放动态申请的内存空间(new分配的)
int i;
int * pi = &i;
delete pi; //error, pi points a local
- 在delete后,立即将指针设为0,避免成为悬垂指针(dangling pointer)。
- 类型转换
- 隐式转换:
- 操作数被转换成相同的类型:int+double int会被转成double
- 用作条件表达式会被转换成bool
- 用一表达式初始化某个变量,或将表达式的值赋给某个变量
- 算术转换,先整数提升再进行类型转换:
- 整型提升(所有比int小的,比如char,short等,如果能包容在int内,则提升为int,否则提升为unsigned int)
- 不同类型,会将小精度的转换成大精度(short和int,short变成int;long和int,int变成long)
- 相同类型,unsigned和signed,signed会被转换成unsigned
- 指针转换:int ia[10]; int * ip = ia;
- 算术类型与bool类型转换:0=>false,其他值=>true
- const转换:非const对象初始化const对象的引用,非const对象的地址转换为指向相关const类型的指针
- 显式转换:static_cast, dynamic_cast, const_cast, reinterpret_cast,
int ival;
double dval;
iva l*= static_const<int>(dval);
C的类型转换:type(expr), (type)expr, 都可以
|