## 第4章 表达式
### 4.1.1 基本概念
decltype(左值表达式)得到的是引用类型。
### 4.1.3 求值顺序
运算对象的求值顺序与优先级和结合律无关。
以下4种运算符明确规定了运算对象的求值顺序:
符号 | 含义
--- | ---
&& | 逻辑与
\|\| | 逻辑或
?! | 条件运算符
, | 逗号运算符
### 4.2 算术运算符
一元正号运算符可作用于指针,返回运算对象值的一个(提升后的)副本。
由于整型提升的影响,布尔值不应该参与运算。
C++11新标准规定整型除法的商一律向0取整。
根据取余运算的定义,即表达式`(m / n)* n + m % n == m`为真(m和n是整数且n非0),即如果m%n不等于0,则它的符号和m相同。故除了-m导致溢出的特殊情况,`m % (-n)`等于`m % n`,`(-m) % n`等于`-(m % n)`。
### 4.9
对引用类型执行**sizeof**运算得到被引用对象所占空间的大小。
对string对象或vector对象执行**sizeof**运算只返回该类型固定部分的大小,不会计算对象中的元素占用了多少空间。
### 4.11.3
**const_cast**只能改变运算对象的底层const。只有**const_cast**能改变表达式的常量属性。