1、整数类型扩展类型
扩展类型是提升计算机在处理数据的速度和空间上的能力,不同类型在不同系统上的功能也不一样。
可移植类型头文件:<stdint.h> ,C语言为现有类型创建更多的类型名,新的类型名都定义在<stdint.h>中;
移植:如 int32_t(精确宽度整数类型) 类型表示32位有符号整数类型,不管系统是多少位,int32_t类型定义的变量都是32位;
空间:如 int_least8_t (最小宽度类型)类型表示一定是至少有8位有符号整数值(指定宽度)的最小整数类型,如果系统最小是16位,仍可定义,但实现位16位;
速度:如 int_fast8_t (最快最小宽度类型)类型定义为系统中对8位有符号值而言运算速度最快的整数类型;
更大数据类型:如 intmax (最大有符号整数类型)类型可存储任何有效的有符号整数值,类似的 unitmax 类型表示最大的无符号整数类型,这些类可能比 long long 和 unsigned long 更大;
显示特定类型的字符串宏头文件: <inttypes.h>,如 PRId32 字符串宏代表打印32位有符号值的合适转换说明;
2、浮点型数据类型
float 类型:至少能精确6位有效数字,取值范围至少是10-37--10+37,通常系统存储一个 float 类型占用32位,其中8位用于表示指数的值和符号,剩余部分表示非指数部分;
double 类型:至少能精确13位有效数字,取值范围至少是10-37-- ~,通常系统存储一个 double 类型占用64位,一些系统将多的32位全部用来表示非指数部分,增加有效数位数,提高精度,一些系统则把一部分分配给指数部分,以容纳更大的数;
long double 类型:满足比 double 更高的精度要求,不过C语言只保证 long double 至少与 double 的精度相同;
浮点常量表示
一般:-1.56E+12、2.87e-3
无小数点:2E5
无指数:15.89
无小数部分:3.E12
无整数部分:.45E-3
系统默认浮点常量为 double 类型,加 f 或 F 后缀表示 float 类型,加 l 或 L 后缀表示 long double 类型;
十六进制浮点型格式:即在十六进制数前加 0x 或 0X,用 p 或 P 分别代替 e 或 E,用2的幂代替10的幂,0xa.1fp10,a 表示十进制的10,1f 表示1/16 + 15/256,f 十进制是15,p10 是 210 或 十进制的1024,表示的值为(10 + 1/16 + 15/256)x 1024 = 10364.0;
打印浮点值
%f 打印十进制记数法的 float 和 double 类型;
%e 打印指数记数法的浮点数;
如果系统支持十六进制,%a 和 % A 代替 %e打印;
打印 long double 使用 %Lf、%Le、%La;
浮点值的上溢和下溢
3、复数和虚数类型
复数类型:float _Complex、double _Complex、long double _Complex 三种复数类型,每个类型值应该包括两部分,实数和虚数部;
虚数类型:float _Imaginary、double _Imaginary、long double _Imaginary三种虚数类型;
如果包含头文件 <complex.h> 可以用 complex 代替_Complex,imaginary 代替 _Imaginary,用 I(i 大写)代替 -1的平方根;