FLT_EVAL_METHOD

来自cppreference.com
< c‎ | types‎ | limits
定义于头文件 <float.h>
#define FLT_EVAL_METHOD /* implementation defined */
(C99起)

指定赋值和转换类型以外的所有浮点算术运算所用的精度。

解释
-1以外的负值 实现定义行为
-1 默认精度未知
0 所有运算和常量求值都在其类型所用的范围和精度内。而且,float_tdouble_t各等价于floatdouble
1 所有运算和常量求值都在double的范围和精度内。而且float_tdouble_t都等价于double
2 所有运算和常量求值都在long double的范围和精度内。而且float_tdouble_t都等价于long double

[编辑] 注意

不管FLT_EVAL_METHOD值为多少,任何浮点表达式都可能收缩,即是说仿佛中间结果具有无限范围和精度一般计算(除非关闭#pragma STDC FP_CONTRACT)。

转换类型和赋值会剥去额外的范围和精度:这是模仿从扩展精度FPU寄存器将值存入标准大小内存位置的行为。

[编辑] 参阅

FLT_EVAL_METHODC++文档