C++ 和 GCC : How Does GCC's C++ Implementation Handle Division by Zero?

标签 c++ gcc compiler-construction

只是出于兴趣。 GCC 的 C++ 实现如何处理它的标准数字类型除以零? 也有兴趣了解其他编译器如何与零除法相关的工作。 随意进入细节。 这不纯粹是为了娱乐,因为它与大学作业有一定关系。

干杯,查兹

最佳答案

事实并非如此。通常发生的情况是,当除法指令的操作数为 0 时,CPU 将抛出某种内部异常,这将触发中断处理程序,该中断处理程序读取 CPU 上各种寄存器的状态并进行处理,通常通过转换它变成信号,该信号被发送回程序并由任何已注册的信号处理程序处理。对于大多数类似 unix 的操作系统,它们会得到一个 SIGFPE。

虽然行为可能会有所不同(例如,在某些 CPU 上,您可以告诉 CPU 不要引发异常,但通常它们只是将一些固定值放入 0 或 MAXINT 中),这种变化通常是由于操作系统的差异, CPUm 和运行时环境,而不是编译器。

关于C++ 和 GCC : How Does GCC's C++ Implementation Handle Division by Zero?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497068/

相关文章:

c++ - 虚拟类的每个对象是否都有指向 vtable 的指针?

c++ - 从 2d char 数组 c++ 将字符串分配给 char 数组

c - 以下哪一个宏是安全的,为什么?

c++ - GCC 允许隐式 int 到指针转换?

c++ - 如果函数内联过于激进会怎样?

c++ - 查找数组中的最小值

c++ - 散列pair <pair <int,int>,pair <int,int >>的unordered_map

CONTROL\crashes 调用 getline

assembly - 位置参数与关键字参数

c - AIX 6.0 环境下的 xlC 编译问题