C++ Primer - 4. 表达式
4.1 基础
4.1.1 基本概念
- 组合运算符和运算对象
- 运算对象转换
- 重载运算符
- 左值和右值
4.1.2 优先级和结合律
4.1.3 求值顺序
如果改变了某个运算对象的值, 在表达式的其他地方不要在用这个运算对象
4.2 算术运算符
布尔值不应该参与运算
bool b = true
bool b2 = -b // b2 is true
算术表达式可能产生未定义的结果, 一部分原因是数学性质本身; 例如除数 0
另外一部分源于计算机的特点: 例如溢出
4.3 逻辑和关系运算符
4.4 赋值运算符
赋值运算符的左侧运算对象必须是一个可修改的左值
4.5 递增和递减运算符
前置版本的递增运算符是避免了不必要的工作, 他把加 1 后直接返回并且改变了这个值本身. 所以后置版本就是一种浪费
// 广泛使用的, 有效的写法, 不断研究这样的例子直到对他们的含义一目了然, 简介可以成为一种美德
cout << *iter++ << endl;
// 等同于
cout << *iter <<endl;
++iter
4.9 sizeof 运算符
返回一条表达式或一个类型名字所占的字节数. sizeof
运算符满足 右结合律, 所得的值返回一个 size_t
类型
sizeof (type)
sizeof expr