[toc]

# 浮点常量

与整数相比 优点:
- 他们可以表示整数之间的值 - 表示范围大很多 缺点:
- 浮点运算比整数慢 - 精度会降低

# 整型

int 运算最快

# 表达式类型提升

Prime Plus 中说,这个类型提升的操作是通过一个叫 "校验表" 来进行的 C++11 版本的校验表:

  • 如果有一个操作数的类型是 long double, 则将另一个操作数转换为 long double
  • 否则,如果有一个操作数的类型是 double, 则将另一个操作数转换为 double
  • 否则,如果有一个操作数的类型是 float, 则将另一个操作数转换为 float
  • 否则,说明操作数都是整型,因此只执行整型提升
  • 在这种情况下,如果两个操作数都是有符号或者无符号的,且其中一个操作数的级别比另一个低,则转换为级别高的类型
  • 如果一个操作数为有符号的,另一个操作数为无符号的,且无符号操作数的级别比有符号操作数高,则将有符号操作数转换为无符号操作数所属的类型
  • 否则,如果有符号类型课表是无符号类型的所有可能值,则将无符号操作数转换为有符号操作数所属的类型
  • 否则,将两个操作数都转换为有符号类型的无符号版本

# 强制类型转换

C++ 引入了四个强制类型转换的运算符,对它们的使用要求更为严格,

# auto, 类型推断

auto 一般在使用 stl 的时候优势非常明显,比如:

1
2
std::vector<double> scores;
std::vector<double>::iterator pv = scores.begin();

可以写成

1
2
std::vector<double> scores;
auto pv = scores.begin();