C 库 - EDOM 宏



C 库的EDOM宏表示域错误,如果输入参数超出数学函数定义的域,则会发生此错误,并且errno被设置为EDOM。

程序员可以在调用此类函数后检查errno以处理域错误。

语法

以下是C库中EDOM宏的语法:

#define EDOM some_value

参数

  • EDOM是宏,因此它不接受任何参数。

返回值

  • 此函数不返回任何值。

示例 1

以下是C库程序,用于演示EDOM宏。

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

int main () {
   double val;

   errno = 0;
   val = sqrt(-10);
   
   if(errno == EDOM) {
      printf("Invalid value \n");
   } else {
      printf("Valid value\n");
   }
   
   errno = 0;
   val = sqrt(10);
   
   if(errno == EDOM) {
      printf("Invalid value\n");
   } else {
      printf("Valid value\n");
   }
   
   return(0);
}

输出

执行以上代码后,我们将得到以下结果:

Invalid value
Valid value

示例 2

在此程序中,我们使用asin()函数计算输入值的反正弦。

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

int main() {
   double invalid_value = 2.0; 

   double result = asin(invalid_value);
   if (errno == EDOM) {
       printf("Arcsine of %f is not defined.\n", invalid_value);
   } else {
       printf("Arcsine of %f = %f radians\n", invalid_value, result);
   }

   return 0;
}

输出

执行以上代码后,我们将得到以下结果:

Arcsine of 2.000000 is not defined.
广告