C++primer 第四章

· decltype: ① decltype(*p)的结果是 int&    ② decltype(&p)的结果是 int** (一个指向整型指针的指针)

 

· bool不该参与运算:bool b = true; bool b2 = -b;   // b2为true

 

· 整数才可取模%,浮点型不可以

· 负数取模:C++11新标准:统一向0取整

· 设m、n是整数且n非0,(m / n) * n + m % n = m   值相等

· m % (-n) = m % n        -m % n = -(m % n)

 

· 短路求值:如&& ||,只有当无法确定左值结果时,才会计算右值结果

 

· 窄化转换:比如 浮点型 → int型

 

· 复合运算符:+= *=等等   a op= b 等同于 a = a op b     //  复合运算符:求值一次   普通运算符:求值二次

 

· 递增递减:++i   i++  除非必须,优先使用前置版本

      后置版本需要将原始值存储下来以便于返回   对空间是一种浪费   特别是对于复杂的迭代器类型,消耗巨大

 

· 三元运算符(条件运算符): 优先级别特别低   整体加括号()

 

· sizeof 运算符: 返回表达式类型,不实际计算对象的值        所以sizeof(*p)  解引用,即使p未初始化也不非法

        64位机器  sizeof(p)  = 8       //   p是一个指针

 

· 隐式转换:为了尽可能避免损失精度,一般会往大了转换     比如比int小的(char bool short)提升为较大的int

 

· 显式转换: cast<type>(expression)   ①static_cast: 只要不包含底层const都可以使用   ②const_cast:改变对象的底层const   

                  ③reinterpret_cast比较危险   如c风格的旧式转换  char *p = (char *) ip 等同于reinterpret_cast

                  旧式转换容易被看漏出错,优先使用c++

posted @ 2020-09-22 21:35  ctxcc  阅读(115)  评论(0)    收藏  举报