一、float、double和 long double
1.1 声明浮点型变量
1.2浮点型常量
1.3 打印浮点值
二、复数和虚数类型
三、其他类型
一、float、double和 long double
对于金融和数学的程序经常使用浮点数,而C语言中的浮点类型有float、double和 long double类型。常见的计数法:
C标准规定,float类型必须至少能表达6位有效数字,而且取值范围至少是10e-37~10e37。double类型(双精度),一般情况下,double占用64位而不是32位。
1.1 声明浮点型变量
浮点型变量的声明和初始化方式与整型变量相同。
1.2浮点型常量
在代码中,可以用多种形式书写浮点型常量。浮点型常量的基本形式是:有符号是数组(包括小数点),后面紧跟e或者E,最后是一个有符号数表示10的指数。
-1.32e+12
2.43E-2
其可没有小数点或指数部分,但是不能同时省略。不能在浮点型常量中间加空格。
在C99标准添加了一种新的浮点型常量格式——用十六进制表示浮点型常量,即在十六进制数前加上十六进制前缀(0x或0X),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)。如下所示:
0xa.1fp10
十六进制a等于十进制10,.1f是1/16加上15/256(十六进制f等于十进制15),p10是210或1024。0xa.1fp10表示的值是(10 + 1/16 + 15/256)×1024(即,十进制10364.0)。
注意,并非所有的编译器都支持C99的这一特性。
1.3 打印浮点值
printf()函数使用%f转换说明打印十进制计数法的float和double类型浮点数,用%e打印指数计数法的浮点数。如果系统支持十六进制格式的浮点数,可用a和A分别代替e和E。
注意:对于浮点值的上溢和下溢,同时注意一个特殊的浮点值NaN。
二、复数和虚数类型
C99标准支持复数类型和虚数类型,但是有所保留。
C语言有3种复数类型:flaot_Complex、double_Complex 和 long double_Complex。例如,float _Complex类型的变量应包含两个float类型的值,分别表示复数的实部和虚部。类似地,C语言的3种虚数类型是float _Imaginary、double _Imaginary和long double _Imaginary。如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_Imaginary,还可以用I代替-1的平方根。
三、其他类型
C语言中还有一些从基本类型衍生的其他类型,包括数组、指针、结构和联合。