【发布时间】:2017-04-23 09:18:48
【问题描述】:
用 C 编码,(开发 c++) 我正在使用:
void h(int x)
{
printf("error devide by zero");
}
signal(SIGFPE, h);
x = a / 0;
printf("%d", x)
它与int a, x; 配合得很好
但是当我使用float a, x; 时,错误消息是:"#INF "
有人告诉我可以中断组装,其他人告诉我必须中断 BIOS,但没有给出解决方案
【问题讨论】:
-
浮点除以零默认不会导致异常。
-
我认为,“错误消息”实际上是指
printf输出#INF? -
是的,我的意思是科迪先生,确切地说:#INF00
-
这是因为浮点值具有“无穷大”的表示,不需要引发异常。目前尚不清楚您的实际问题是什么。您想要获得例外吗?为什么不添加检查零除数的代码?
-
您仍然拒绝回答的问题是为什么?硬件中断非常慢,在操作系统下运行时会导致各种问题。如果您可以通过简单的检查以正确的方式处理它,为什么还要这样做?
标签: c interrupt divide-by-zero