isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered -
сравнение
чисел с
плавающей
запятой с
учётом NaN
Math library (
libm,
-lm)
#include <math.h>
int isgreater(x, y);
int isgreaterequal(x, y);
int isless(x, y);
int islessequal(x, y);
int islessgreater(x, y);
int isunordered(x, y);
All functions described here:
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
Обычные
операции
сравнения
(такие как
<
— «меньше
чем»)
завершаются
ошибкой,
если одним
из
операндов
является NaN.
При этом
возникает
исключение.
Для
избежания
подобной
ситуации в C99
определены
макросы,
описанные
ниже.
В данных
макросах
гарантируется
однократное
вычисление
операндов.
Аргументами
могут быть
любые типы
с
плавающей
запятой
(примечание:
не
передавайте
в
аргументах
целочисленные
значения,
так как они
не будут
приведены
к типу с
плавающей
запятой).
-
isgreater()
- Вычисляет
(x) > (y) даже,
если
значение x
или y равно
NaN.
-
isgreaterequal()
- Вычисляет
(x) >= (y) даже,
если
значение x
или y равно
NaN.
-
isless()
- Вычисляет
(x) < (y) даже,
если
значение x
или y равно
NaN.
-
islessequal()
- Вычисляет
(x) <= (y) даже,
если
значение x
или y равно
NaN.
-
islessgreater()
- Вычисляет
(x) < (y) || (x) > (y)
даже, если
значение x
или y равно
NaN. Этот
макрос не
эквивалентен
x != y, так
как это
выражение
правдиво (true),
если
значение x
или y равно
NaN.
-
isunordered()
- Вычисляет,
являются
ли
аргументы
неупорядоченными
(unordered), то есть
не равен ли
один из
аргументов
NaN.
Все
макросы,
кроме
isunordered(),
возвращают
результат
сравнения;
они
возвращают
0, если один
из
аргументов
равен NaN.
Макрос
isunordered()
возвращает
1, если
значение
x
или
y равно
NaN, и 0 в
противном
случае.
Ошибки не
возникают.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
isgreater(), isgreaterequal(), isless(),
islessequal(), islessgreater(), isunordered() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
Не всё
оборудование
имеет эти
возможности,
и там, где их
нет, они
будут
эмулироваться
макросами.
Это
приведёт к
небольшим
потерям
производительности.
Не
используйте
эти
макросы,
если
значения NaN
для вас не
существенны.
fpclassify(3),
isnan(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy S. Seregin
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]