只是出于兴趣。 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/