Namespaces
Variants

FLT_EVAL_METHOD

From cppreference.net
< c ‎ | types ‎ | limits
Определено в заголовочном файле <float.h>
#define FLT_EVAL_METHOD /* определяется реализацией */
(начиная с C99)

Определяет диапазон и точность значений с плавающей запятой, полученных из констант с плавающей запятой и из всех операций (операторы, неявные преобразования операндов), за исключением присваивания, приведения типов и вызова библиотечных функций.

Значение Объяснение
отрицательные значения кроме - 1 поведение, определяемое реализацией
- 1 точность по умолчанию неизвестна
0 все операции и константы вычисляются в диапазоне и точности используемого типа. Дополнительно, float_t и double_t эквивалентны float и double соответственно
1 все операции и константы вычисляются в диапазоне и точности double . Дополнительно, оба float_t и double_t эквивалентны double
2 все операции и константы вычисляются в диапазоне и точности long double . Дополнительно, оба float_t и double_t эквивалентны long double

Примечания

Независимо от значения FLT_EVAL_METHOD , любое выражение с плавающей точкой может быть сконтрактовано , то есть вычислено так, как если бы все промежуточные результаты имели бесконечный диапазон и точность (если только #pragma STDC FP_CONTRACT не отключена).

Приведение и присваивание удаляют любой избыточный диапазон и точность: это моделирует действие сохранения значения из регистра FPU с расширенной точностью в стандартную ячейку памяти.

Смотрите также

(C99)
наиболее эффективный тип с плавающей точкой, по меньшей мере такой же ширины, как float
(typedef)
наиболее эффективный тип с плавающей точкой, по меньшей мере такой же ширины, как double
(typedef)
C++ documentation для FLT_EVAL_METHOD