Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么当b为零时%b会产生SIGFPE?_C++ - Fatal编程技术网

C++ 为什么当b为零时%b会产生SIGFPE?

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是浮点异常的

今天我在我刚写的一些代码中跟踪到一个浮点异常。它花了一点时间才找到,因为它实际上是由取整数mod zero引起的。很明显,做任何事mod zero都不会被定义,但我觉得奇怪的是,这个错误是如此误导。在C++模运算中使用两个整数的浮点是什么?(我使用的是gcc 4.3.2)

下面是一个简单的程序来演示错误

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;