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

islessgreater宏


概要:
#include <math.h>
int islessgreater(real-floating x, real-floating y);

描述:

关系运算符和相等运算符支持数值间的常用数学关系。对于任何有序数值对有且只有一种关系是正确的,即小于、大于或者等于。当参数是非数值(NaN)时,关系运算符可能会引发FE_INVALID浮点异常。对于一个非数值和一个数值,或者对于两个非数值,只有无序关系(unordered relationship)为真。IEC 60559标准要求:如果操作数比较是无序的,内置关系运算符引发FE_INVALID浮点异常,作为未考虑非数值程序的错误指示符;这些情况下结果是错误的。ISO/IEC 9899:2018标准第7.12.14 Comparison macros节提供了关系运算符安静版本(不引发浮点异常)的宏以及其它比较宏,这些宏有助于编写高效代码,在不引发FE_INVALID浮点异常的情况下解释非数值。


islessgreater判断第一个参数是否小于或者大于第二个参数。

islessgreater(x,y)类似于(x)<(y)||(x)>(y),不同的是当参数x和参数y无序时,该宏不会引发FE_INVALID浮点异常;表达式(x)<(y)||(x)>(y)会引发FE_INVALID浮点异常。

real-floating表示参数应为实数浮点类型。如果任何参数是整数类型或者非实数浮点类型的其它类型,宏行为是未定义的。两个参数不必是相同类型。比语义类型更宽格式表示的参数是否转换为语义类型是未指定的。


参数:
real-floating x

参数应为实数浮点类型(例如:floatdoublelong double)的表达式。

real-floating y

参数应为实数浮点类型(例如:floatdoublelong double)的表达式。


返回值:

该宏返回(x)<(y)||(x)>(y)的值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
/*宏islessgreater范例*/

#include <math.h>
#include <stdio.h>

int main(void)
{
    if(islessgreater(3.0,5.0))
        puts("3.0 is less than or greater than 5.0.");
	
    if(islessgreater(5.0,5.0))
        puts("5.0 is less than or greater than 5.0.");
        
    if(islessgreater(15.0,INFINITY))
        puts("15.0 is less than or greater than INFINITY.");

    if(islessgreater(10.0,NAN))
        puts("10.0 is less than or greater than NAN.");

    return 0;
}

输出:

3.0 is less than or greater than 5.0.

15.0 is less than or greater than INFINITY.


相关内容:
isgreater 判断第一个参数是否大于第二个参数的宏。
isgreaterequal 判断第一个参数是否大于等于第二个参数的宏。
isless 判断第一个参数是否小于第二个参数的宏。
islessequal 判断第一个参数是否小于等于第二个参数的宏。
isunordered 判断参数是否无序的宏。