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

signbit宏


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

描述:

该宏是函数式宏(function-like macro),判断参数符号是否为负号。

该宏能够判断所有值的符号,包括无穷大、0、非数值。如果0没有符号,将作为正数处理。


参数:
real-floating x

参数x应为实数浮点类型表达式,例如:floatdoublelong double类型表达式。


返回值:

如果参数x符号是负号,该宏返回非0值。


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

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

#define LENGTH 10

int main(void)
{
    double arr[LENGTH] = {0.0,-0.0,3.14,-3.14,NAN,-NAN,
            INFINITY,-INFINITY,DBL_MIN/2,-DBL_MIN/2};
    char *ptr[LENGTH] = {"0.0","-0.0","3.14","-3.14","NAN","-NAN",
            "INFINITY","-INFINITY","DBL_MIN/2","-DBL_MIN/2"};
            
    puts("The sign of its argument value is negative.");
    for(int i=0; i<LENGTH; ++i)
    {
        if(signbit(arr[i]))
            printf("%s\n",ptr[i]);
    }

    return 0;
}

输出:

The sign of its argument value is negative.

-0.0

-3.14

-NAN

-INFINITY

-DBL_MIN/2


相关内容:
fpclassify 对参数按浮点类别进行分类的宏。
isfinite 判断参数是否为有限值的宏。
isinf 判断参数是否为无穷大的宏。
isnan 判断参数是否为非数值的宏。
isnormal 判断参数是否为规格化数的宏。