目录
1.1 基本内置类型
C++定义了算数类型和空类型。算数类型下文讲到,而空类型不对应具体的值,只用于一些特殊的场合,例如:当函数不返回任何值时使用空类型最为返回类型。
1.1.1 算数类型
算数类型分两类:整型和浮点型
下表为C++标准规定的尺寸的最小值。
C++算数类型 | ||
类型 | 含义 | 最小尺寸 |
bool | 布尔类型 | 未定义 |
char | 字符 | 8位 |
wchar_t | 宽字符 | 16位 |
char16_t | Unicode字符 | 16位 |
char32_t | Unicode字符 | 32位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
long long | 长整型 | 64位 |
float | 单精度浮点数 | 6位有效数字 |
double | 双精度浮点数 | 10位有效数字 |
long double | 扩展精度浮点数 | 10位有效数字 |
注:一个char的大小和一个机器字节一样。
除了布尔型和扩展的字符型之外,其他整型可以划分为带符号的(signed)和无符号的(unsigned)。
选择类型的经验准则:
当明确知晓数值不可能为负时,选用无符号类型
使用int执行整数运算。在实际应用中,short常常显得太小而long一般和int有一样的尺寸。如果你的数值超过了int的表示范围,选用long long。
在算术表达式中不要使用char或bool,只有在存放字符或布尔值时才使用它们。因为类型char在一些机器上是有符号的,而在另一些机器上又是无符号的,所以如果使用char进行运算特别容易出问题。如果你需要使用一个不大的整数,那么明确指定它的类型是signed char或者unsigned char。
执行浮点数运算选用double,这是因为float通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。事实上,对于某些机器来说,双精度运算甚至比单精度还快。long double提供的精度在一般情况下是没有必要的,况且它带来的运行时消耗也不容忽视。
1.1.2 类型转换
|cprimer5