C++思考笔记(1):基本数据类型

基本数据类型

除开void类型之外,就是算术类型。而算术类型又可以分为整型和浮点型:


算术类型分类

C++标准并没有规定基本数据类型的长度,但是规定了基本数据的最小长度,以及它们之间的大小关系。比如short最小长度为16位bit,int的长度不小于short,而long又不小于int等等。

类型 含义 最小长度 备注
bool 布尔值 NA
char 字符型 8 bits 大小为一个字节
wchar_t 宽字符型 16 bits
char16_t unicode字符型 16 bits 大小固定
char32_t unicode字符型 32 bits 大小固定
short 短整型 16 bits
int 整型 16 bits
long 长整型 32 bits
long long 超长整型 64 bits C++11标准引入
float 单精度浮点型 6位有效数字
double 双精度浮点型 10位有效数字
long double 扩展精度浮点型 10位有效数字

为什么C++不规定基本类型定长呢?

比如java中每一种类型都有自己固定的长度,做到在所有平台运行都是一致的。但我认为C++的做法反而是更合理的,因为C++将决定基本数据类型长度的权力交给了编译器实现,这样编译器就能根据具体的硬件平台来选择处理效率最高的方案
比如对于整型和浮点型,int和double类型的长度在各个平台处理起来往往都是最高效的,不仅在C++程序员编写程序的时候经常用到,C++的语法也经常会用到,例如数字字面值默认为int和double类型,二元运算默认提升为int和double类型,就连不定参数的传入也会默认提升为int和double类型。这样只需要写一次代码就能得到各个平台效率最高的程序。
至于代码可移植性问题,首先C++规定的基本类型最小长度足够应付很多场景,其余确实需要定长类型的情况也可以利用头文件引入的int8_t,int16_t,int32_t等定长类型来解决。

你可能感兴趣的:(C++思考笔记(1):基本数据类型)