C 除以零中断误差“;使用浮点变量;

C 除以零中断误差“;使用浮点变量;,c,interrupt,divide-by-zero,C,Interrupt,Divide By Zero,用C编写代码,(dev C++) 我正在使用: void h(int x) { printf("error devide by zero"); } signal(SIGFPE, h); x = a / 0; printf("%d", x) 它适用于inta,x 但是当我使用浮点a,x错误消息是:“#INF” 有人告诉我我可以用汇编中断,其他人告诉我必须中断BIOS,但没有给出解决方案定义是否为除零生成异常。除非您显式地打开或关闭它,否则不会定义您得到的行为 此外,您还将h函数本身用

用C编写代码,(dev C++) 我正在使用:

void h(int x)
{
    printf("error devide by zero");
}

signal(SIGFPE, h);
x = a / 0;
printf("%d", x)

它适用于
inta,x
但是当我使用
浮点a,x错误消息是:
“#INF”
有人告诉我我可以用汇编中断,其他人告诉我必须中断BIOS,但没有给出解决方案定义是否为除零生成异常。除非您显式地打开或关闭它,否则不会定义您得到的行为


此外,您还将h函数本身用作信号处理程序。当信号被提升时,这将导致一个无休止的循环。

浮点除零默认情况下不会导致异常。我假设,通过“错误消息”,您实际上是指
printf
输出
\INF
?是的,我的意思是科迪先生,确切地说:#inf00这是因为浮点值具有“无限“并且不需要提出异常。你真正的问题是什么还不清楚。你想得到一个例外?为什么不添加检查零除数的代码呢?您仍然拒绝回答的问题是为什么?硬件中断非常慢,在操作系统下运行时会导致各种问题。如果你能通过简单的检查以正确的方式处理它,你为什么要这样做呢?不,
h
只是
void h(int x){printf(“error devide by zero”);}
;例如,x=5/0;“int”