浮点字面值

浮点文字 是具有小数点或指数部分的数字。 它们可以表示为:

二进制浮点文字

实二进制浮点常量由以下内容组成:

  • 整体部件
  • 小数点
  • 一种小数部分
  • 指数部分
  • 可选后缀

整数部分和小数部分都由十进制数字组成。 可以省略整数部分或小数部分,但不能同时省略两者。 可以省略小数点或指数部分,但不能同时省略两者。

二进制浮点文字语法

读取语法图跳过可视语法图数字.数字数字.数字fFlL
EXPONENT
读取语法图跳过可视语法图eE+-数字

后缀 fF 指示 float的类型,后缀 lL 指示 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 功能,由以下部分组成。 仅限 C + +XL C/C++ 编译器作为 IBM 扩展支持此功能。仅限 C + +

  • 十六进制前缀
  • 重要部分
  • 二进制指数部分
  • 可选后缀

显着部分表示一个合理的数字,由以下部分组成:

  • 十六进制数字序列 (整数部分)
  • 可选分数部分

可选的分数部分是后跟十六进制数字序列的句点。

指数部分指示显着部分所向的 2 的幂,并且是可选的带符号十进制整数。 类型后缀是可选的。 完整语法如下:

十六进制浮点文字语法

读取语法图跳过可视语法图0x0Xdigit_0_to_fdigit_0_to_F.digit_0_to_fdigit_0_to_Fdigit_0_to_fdigit_0_to_F.digit_0_to_fdigit_0_to_FfFlL
EXPONENT
读取语法图跳过可视语法图pP+-digit_0_to_9

后缀 fF 指示 float的类型,而后缀 lL 指示 long double的类型。 如果未指定后缀,那么浮点常量的类型为 double 可以省略整数部分或小数部分,但不能同时省略两者。 需要二进制指数部分以避免类型后缀 F 的模糊性被误认为是十六进制数字。

十进制浮点文字 (IBM 扩展)

实十进制浮点常量由以下内容组成:

  • 整体部件
  • 小数点
  • 一种小数部分
  • 指数部分
  • 可选后缀

整数部分和小数部分都由十进制数字组成。 可以省略整数部分或小数部分,但不能同时省略两者。 可以省略小数点或指数部分,但不能同时省略两者。

十进制浮点文字语法

读取语法图跳过可视语法图数字.数字数字.数字dfDFddDDdlDL
EXPONENT
读取语法图跳过可视语法图eE+-数字

后缀 dfDF 指示类型 _Decimal32,后缀 ddDD 指示类型 _Decimal64,后缀 dlDL 指示类型 _Decimal128。 如果未指定后缀,那么浮点常量的类型为 double

不能在文字后缀中 使用混合大小写例如,后缀 dFDf 无效。

以下是十进制浮点文字声明的示例:

_Decimal32 a = 22.2df;
_Decimal64 b = 33.3dd;
注: 仅当启用了 -qdfp 选项时,才会识别十进制浮点文字后缀。

复杂文字

在 C99 标准中引入的复杂字面值由两个部分组成: 实部分和虚部分。

复杂文字语法

读取语法图跳过可视语法图实部+虚构部分
实部
读取语法图跳过可视语法图浮点常量 (floating-point constant)
虚部 (imaginary part)
读取语法图跳过可视语法图浮点常量 (floating-point constant)* _Complex_I
可以将 浮点常量 指定为 十进制或 十六进制浮点文字 (包括可选后缀) ,采用上述各节中描述的任何格式。

_Complex_I 是 头文件中定义的宏,代表虚数单位 complex.h i ,即 的平方根。 -1

例如,声明:
varComplex = 2.0f + 2.0f * _Complex_I;
将复杂变量 varComplex 初始化为值 2.0 + 2.0i

开始 IBM 扩展 为了便于移植使用GNU C开发的应用程序, XL C/C++ 除了表示复数类型的标准后缀(floatdoublelong double )之外,还允许您使用后缀来表示复数的虚部。

使用 GNU 后缀的复杂文字的简化语法如下:
读取语法图跳过可视语法图实部+虚构部分
实部
读取语法图跳过可视语法图浮点常量 (floating-point constant)
虚部 (imaginary part)
读取语法图跳过可视语法图浮点常量 (floating-point constant)虚后缀

可以将 浮点常量 指定为 十进制或 十六进制浮点文字 (包括可选后缀) ,采用上述各节中描述的任何格式。

imaginary-suffix 是表示虚单元的后缀 iIjJ之一。

例如,声明
varComplex = 3.0f + 4.0fi;
将复数变量 varComplex 初始化为 3.0 + 4.0i结束 IBM 扩展