相信你在 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)
。
浮点数
这才是本文的重点。