数值型¶
数值型可分为两大类:
0x00 整型¶
| 类型关键字 | 类型说明 | 存储大小(linux) | 值范围 | 示例 |
|---|---|---|---|---|
| short | 有符号短整型 | sizeof(short)=2[x86和x86_64] | -32768~32767 | short a = 20; |
| unsigned short | 无符号短整型 | sizeof(unsigned short)=2[x86和x86_64] | 0~65535 | unsigned short a = 20; |
| int | 有符号整型 | sizeof(int)=2[x86]/4[x86_64] | -32768~32767或-2147483648~2147483647 | int a = 20[10进制]/020[8进制]/0x20[16进制]; |
| unsigned int | 无符号整型 | sizeof(unsigned int)=2[x86]/4[x86_64] | 0~65535或0~4294967295 | unsigned int a = 20; |
| long | 有符号长整型 | sizeof(long)=4[x86]/8[x86_64] | -2147483648~2147483647或-9223372036854775808~9223372036854775807 | long a = 20; |
| unsigned long | 无符号长整型 | sizeof(unsigned long)=4[x86]/8[x86_64] | 0~4294967295或0~1777777777777777777777 | unsigned long a = 20; |
| long long | 有符号长长整型 | sizeof(long long)=8[x86和x86_64] | -9223372036854775808~9223372036854775807 | long long a = 20; |
| unsigned long long | 无符号长长整型 | sizeof(unsigned long long)=8[x86和x86_64] | 0~1777777777777777777777 | unsigned long long a = 20; |
| 整型数 | 对应类型 |
|---|---|
| 100 | int |
| 100u | unsigned int |
| 100l | long |
| 100ul | unsigned long |
| 100ll | long long |
| 100ull | unsigned long long |
整型数据存在两种类型的溢出
- 符号位溢出:超过有符号数的最大值
- 最高位溢出:超过无符号数的最大值
注意:在所有数值类型中(包括浮点型),计算机CPU处理int类型数据的效率是最高的,int只是占用较大内存而已
0x01 浮点型¶
| 类型关键字 | 类型说明 | 存储大小(linux) | 值范围 | 精度 |
|---|---|---|---|---|
| float | 单精度浮点数 | sizeof(float)=4[x86_64] | 1.2E-38~3.4E+38 | 6位小数 |
| double | 双精度浮点数 | sizeof(double)=8[x86_64] | 2.3E-308~1.7E+308 | 15位小数 |
| long double | 长双精度浮点数 | sizeof(long double)=16[x86_64] | 3.4E-4932~1.1E+4932 | 18位小数 |
在头文件float.h定义了浮点型相关的宏;通过这些宏可以输出浮点类型占用的存储空间以及它的范围值
#include <stdio.h>
#include <float.h>
int main()
{
printf("Storage size for float : %d \n", sizeof(float));
printf("Minimum float positive value: %E\n", FLT_MIN );
printf("Maximum float positive value: %E\n", FLT_MAX );
printf("Precision value: %d\n", FLT_DIG );
return 0;
}