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++
浙公网安备 33010602011771号