相信你在 C++ 入门的时候就已经接触到了基础类型这个概念,但是,你真的完全理解了基础类型吗?
布尔型
bool 非常简单,标准只要求它能存储 true 和 false。sizeof(bool) 由实现定义,可以不为 1。
整型与字符类型
首先有几个冷知识:
- 整型的修饰符可以调换顺序。如
unsigned long long int等价于long long unsigned int、long int long unsigned。 long long实际上在 C++11 里才写入标准中,尽管很多编译器并不需要开启-std=c++11或更高版本的编译选项都可认识long long。
| 数据类型 | 最小长度/bit |
|---|---|
short |
16 |
int |
16 |
long |
32 |
long long [C++11 起] |
64 [C++11 起] |
char |
无定义[C++14 前] / 8[C++14 起] |
C++ 标准还保证 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)。
浮点数
这才是本文的重点。