c++ 内置类型见下表
类型 | 含义 | 存储空间 |
bool | 布尔型 | ------ |
char | 字符型 | 8位 |
wchar_t | 宽字符型 | 16位 |
short | 短整数 | 16位 |
int | 整数 | 32位 |
long | 长整数 | 32位 |
float | 单精度浮点型 | 32位(7位有效位) |
double | 双精度浮点型 | 64位(15位有效位) |
long double | 扩展精度浮点型 | 19位有效位 |
一.整型
表示整数、字符、和布尔值的算术类型合称为整型。
1.字符型
其中字符型又分为两种,char和wchar_t ,由于char 只能表示有限的255个字符,而世界上不同国家语言的不同,如中文和日语,所以这些字符的总个数远远超过了255,所以引入了wchar 来存储 更多的字符。
2.整型值
short、int、long都表示整型值,但存储空间不一样,所以表示的大小也不一样。一般short占半个机器字长(一个机器字长等于4个字节),int 占一个机器字长,long 一般占1个或者两个机器字长。
其中整型又分为有符号和无符号。如果某机器上short 类型占16位,那么可以赋给有符号短整型的最大值为2的15次方-1,无符号短整型的最大值为2的16次方-1;当给一个16位的无符号短整型(unsigned short)对象赋值100000是,赋的值是多少呢?我们可以拿100000对65536求余得到34464.
注意:整型运算中,当碰到用32位表示的int 类型和用64位表示的long 类型面临选择时一定注意,在int 能保证范围的情况下一定不要用long,因为用long进行计算所花的成本远远高于int
3.浮点型
浮点型分为float、double、long double.一般用32位来表示float ,用64位来表示double,用96位或者128位来表示long double.
在float 类型中隐式的精度损失是不能忽视的,而double类型的精度代价相对于float类型的精度代价可以忽略,而且有些机器上的double 类比float 反而快一些。long double 类型提供的精度一般情况下都没必要,而且还要消耗额外的代价。