1、要理解多个操作数组成的表达式,必须先理解操作符的优先级、结合性、和操作数的求值顺序。
2、对于算术操作符来说:一元操作符的优先级最高、其次是乘除、再其次是二元的加、减法操作。
3、关系操作符使用算术或者指针类型的操作数,并返回bool值。
4、逻辑与与逻辑或操作符总是先计算其左操作数,然后再计算其右操作数。只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数,这种求值策略称为“短路求值”。
5、不应该串接使用关系操作符。
6、应该仔细区分位与(&)与逻辑与(&&)之间的区别,以及位或(|)与逻辑或(||)之间的区别。
7、IO操纵符也是左结合。移位操作具有中等优先级,其优先级比算术操作符低, 比关系操作符以及赋值操作符和条件操作符优先级高。
8、C++中支持10个复合赋值操作符:+=、-=、*=、%=、<<=、>>=、&=、^=、|=;使用复合赋值操作符时,左操作数只计算了一次,而使用类似的长操作符则需要计算两次。
9、条件操作符? : 的优先级相当低、当要在一个复合的表达式中使用条件操作符时,需要使用括号。
10、圆括号凌驾于优先级之上。
11、对于内置类型或者没有默认构造函数的类型,采用不同初始化方式有显著差别。int *pi = new int; int *pi = new int() 第一个语句的int类型变量没有初始化,而第二个语句的int型变量则被初始化为0.
12、动态类型转换有四种。dynamic_cast(运行时识别指针或者引用所指向的对象) 、const_cast(去掉表达式的const性质)、static_cast(编译器隐式的执行的任何转换都可以由static_cast显示完成)、reinterpret_cast(通常为操作数的位模式提供较低层次的重新解释, 它本质上依赖于机器。需要理解所应用的数据类型,以及编辑器实现强制类型转换的细节)。