第4章 表达式

左值和右值:

当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)

求值顺序:四种明确规定了运算对象的求值顺序的运算符:‘ && ’、‘ || ’、‘ ?: ’ 、‘ ,’。

1、处理复合表达式时:拿不准时用括号强制表达式组合关系复合程序逻辑的要求

           :如果改变了某个运算对象的值,在表达式其他的地方不要再使用这个运算对象

2、bool值不要参与算术运算:因为bool值首先会被提升为int类型然后在求值转化,结果可能和逻辑不符合

3、取余运算符运算对象必须是整数类型

两数相除商一律向0取整(截除小数部分)

4、声明引用可以避免对元素值的拷贝

5、进行比较运算时除非比较对象是布尔类型,否则不要使用布尔字面值true和false作为运算对象

6、除非必须否则不用递增递减的后置版本。

7、数组转换为指针大多数情况下会发生,但用作decltype、&、 sizeof及typeid等时不会发生转换

8、强制类型转换可以将存在void类型中的指针取出

9、const_cast能改变对象的常量属性,但通过const_cast对常量进行写操作结果是未定义的(常用于函数重载)

10、reinterpret_cast 不用最好。

11、尽量避免强制类型转换,如果实在无法避免,则应尽量限制类型转换值的作用域,并且记录对相关类型的所有假设。

猜你喜欢

转载自www.cnblogs.com/xiaogaogao/p/11751156.html