当前位置: C语言 -- 标准库 -- <float.h> -- FLT_EVAL_METHOD

FLT_EVAL_METHOD宏


概要:

#define FLT_EVAL_METHOD value //value值由实现定义。


描述:

除赋值和强制类型转换外(赋值和强制类型转换会删除所有额外的范围和精度。),由浮点运算生成的值、受常用算术转换(usual arithmetic conversions)影响的值和浮点常量的值会被评估为范围和精度可能大于类型要求的格式。

FLT_EVAL_METHOD表示评估方法。具体实现中使用的评估格式由宏FLT_EVAL_METHOD的实现定义值决定。


FLT_EVAL_METHOD的可能值:

-1

评估格式不明确。

0

根据类型的范围和精度评估所有操作和常量。

1

根据double类型的范围和精度评估所有float类型和double类型的操作和常量;根据long double类型的范围和精度评估所有long double类型的操作和常量。

2

根据long double类型的范围和精度评估所有操作和常量。

:所用评估格式涉及所有浮点类型,而不仅仅是实数类型,例如:如果宏FLT_EVAL_METHOD值为1,两个float _Complex类型操作数的积使用double _Complex表示,其实数部分和虚数部分均被评估为double类型。

如果宏FLT_EVAL_METHOD存在其它负值,将由实现定义评估格式。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
/*宏FLT_EVAL_METHOD范例*/

#include <float.h>
#include <stdio.h>

int main(void)
{
    printf("FLT_EVAL_METHOD = %d\n",FLT_EVAL_METHOD);

    return 0;
}


输出:

FLT_EVAL_METHOD = 0


相关内容:
FLT_ROUNDS 表示舍入模式的宏。