if(fabs(x)<=1)
y=asin(x);
else
y=…对数函数也可作类似的处理。但是如果遇到幂函数pow(x,y)时,问题就不那么简单了。仔细分析将发现:| y x | 负小数 | 负整数 | 0 | 整数 | 小数 |
| 负小数 | 无意义 | 有意义 | 有意义 | 有意义 | 无意义 |
| 负整数 | 无意义 | 有意义 | 有意义 | 有意义 | 无意义 |
| 0 | 无意义 | 无意义 | 有意义 | 有意义 | 有意义 |
| 整数 | 有意义 | 有意义 | 有意义 | 有意义 | 有意义 |
| 小数 | 有意义 | 有意义 | 有意义 | 有意义 | 有意义 |
int _matherr( struct _exception *except );为了利用此函数,只需在应用数学函数的地方定义一个这样的函数,例如#include <math.h>#include <stdio.h>void main(){double x,y,z;x=-1.23;y=-1;z=pow(x,y);printf("%g
",z);y=-1.1;z=pow(x,y);printf("%g
",z);}int _matherr(struct _exception *except){char* errorString[] = {"_DOMAIN","_SING", "_OVERFLOW", "_PLOSS","_TLOSS", "_UNDERFLOW"};printf("Error function name is %s
",except->name);printf("The varianbles arg1=%g,arg2=%g
",except->arg1,except->arg2);printf("The error type = %s
",errorString[except->type]);printf("The error value=%g
",except->retval);except->retval=1234;printf("After handling error value=%g
",except->retval);return 1;}