C++ 为什么当b为零时%b会产生SIGFPE?
今天我在我刚写的一些代码中跟踪到一个浮点异常。它花了一点时间才找到,因为它实际上是由取整数mod zero引起的。很明显,做任何事mod zero都不会被定义,但我觉得奇怪的是,这个错误是如此误导。在C++模运算中使用两个整数的浮点是什么?(我使用的是gcc 4.3.2) 下面是一个简单的程序来演示错误C++ 为什么当b为零时%b会产生SIGFPE?,c++,C++,今天我在我刚写的一些代码中跟踪到一个浮点异常。它花了一点时间才找到,因为它实际上是由取整数mod zero引起的。很明显,做任何事mod zero都不会被定义,但我觉得奇怪的是,这个错误是如此误导。在C++模运算中使用两个整数的浮点是什么?(我使用的是gcc 4.3.2) 下面是一个简单的程序来演示错误 int main() { int a=3,b=0; int c=a%b; return 0; } 看一看 有关你的问题: SIG是信号名称的通用前缀;FPE是浮点异常的
int main()
{
int a=3,b=0;
int c=a%b;
return 0;
}
看一看
有关你的问题:
SIG是信号名称的通用前缀;FPE是浮点异常的首字母缩写。虽然SIGFPE不一定涉及浮点运算,但在不破坏向后兼容性的情况下,无法更改其名称
该操作将触发:
SIG是信号的通用前缀
姓名;FPE是
浮点异常。虽然
SIGFPE不一定涉及
浮点运算,没有
无需更改其名称的方法
打破向后兼容性
GDB对此更清楚一点,称之为“算术异常”:
(gdb) run
Starting program: /home/emil/float
Program received signal SIGFPE, Arithmetic exception.
0x0804837d in main () at float.c:4
4 int c=a%b;