Skip to content

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

4.10 逗号运算符

4.11 类型转换