浮点字面值
二进制浮点文字
实二进制浮点常量由以下内容组成:
- 整体部件
- 小数点
- 一种小数部分
- 指数部分
- 可选后缀
整数部分和小数部分都由十进制数字组成。 可以省略整数部分或小数部分,但不能同时省略两者。 可以省略小数点或指数部分,但不能同时省略两者。
后缀 f 或 F 指示 float的类型,后缀 l 或 L 指示 long double的类型。 如果未指定后缀,那么浮点常量的类型为 double。
加号 (+) 或减号 (-) 可以在浮点文字之前。 但是,它不是文字的一部分; 它被解释为一元运算符。
以下是浮点文字的示例:
| 浮点常量 (floating-point constant) | 值 |
|---|---|
| 5.3876e4 | 53,876 |
| 4e-11 | 0.00000000004 |
| 1e+5 | 100000 |
| 7.321E-3 | 0.007321 |
| 3.2E+4 | 32000 |
| 0.5e-6 | 0.0000005 |
| 0.45 | 0.45 |
| 6.e10 | 60000000000 |
十六进制浮点文字
实数十六进制浮点常量是 C99 功能,由以下部分组成。
XL C/C++ 编译器作为 IBM 扩展支持此功能。
- 十六进制前缀
- 重要部分
- 二进制指数部分
- 可选后缀
显着部分表示一个合理的数字,由以下部分组成:
- 十六进制数字序列 (整数部分)
- 可选分数部分
可选的分数部分是后跟十六进制数字序列的句点。
指数部分指示显着部分所向的 2 的幂,并且是可选的带符号十进制整数。 类型后缀是可选的。 完整语法如下:
后缀 f 或 F 指示 float的类型,而后缀 l 或 L 指示 long double的类型。 如果未指定后缀,那么浮点常量的类型为 double。 可以省略整数部分或小数部分,但不能同时省略两者。 需要二进制指数部分以避免类型后缀 F 的模糊性被误认为是十六进制数字。
十进制浮点文字 (IBM 扩展)
实十进制浮点常量由以下内容组成:
- 整体部件
- 小数点
- 一种小数部分
- 指数部分
- 可选后缀
整数部分和小数部分都由十进制数字组成。 可以省略整数部分或小数部分,但不能同时省略两者。 可以省略小数点或指数部分,但不能同时省略两者。
后缀 df 或 DF 指示类型 _Decimal32,后缀 dd 或 DD 指示类型 _Decimal64,后缀 dl 或 DL 指示类型 _Decimal128。 如果未指定后缀,那么浮点常量的类型为 double。
不能在文字后缀中 使用混合大小写 。 例如,后缀 dF 或 Df 无效。
以下是十进制浮点文字声明的示例:
_Decimal32 a = 22.2df;
_Decimal64 b = 33.3dd;复杂文字
在 C99 标准中引入的复杂字面值由两个部分组成: 实部分和虚部分。
_Complex_I 是 头文件中定义的宏,代表虚数单位 complex.h i ,即 的平方根。 -1
varComplex = 2.0f + 2.0f * _Complex_I;将复杂变量 varComplex 初始化为值 2.0 + 2.0i。
为了便于移植使用GNU C开发的应用程序, XL C/C++ 除了表示复数类型的标准后缀(float、 double 或 long double )之外,还允许您使用后缀来表示复数的虚部。
可以将 浮点常量 指定为 十进制或 十六进制浮点文字 (包括可选后缀) ,采用上述各节中描述的任何格式。
imaginary-suffix 是表示虚单元的后缀 i, I, j或 J之一。
varComplex = 3.0f + 4.0fi;将复数变量 varComplex 初始化为 3.0 + 4.0i。 
