只是出于兴趣。 GCC 的 C++ 实现如何处理其标准数字类型被零除的情况? 也有兴趣了解其他编译器如何与零除法相关的工作。 请随意详细说明。 这不仅仅是为了娱乐,因为它与大学作业半相关。
事实并非如此。通常发生的情况是,当除法指令的操作数为 0 时,CPU 会抛出某种内部异常,这将触发一个中断处理程序,读取 CPU 上各个寄存器的状态并进行处理,通常通过转换它转换为信号,该信号被发送回程序并由任何注册的信号处理程序处理。对于大多数类似 Unix 的操作系统,它们会获得 SIGFPE。
虽然行为可能有所不同(例如,在某些 CPU 上,您可以告诉 CPU 不要引发异常,但通常它们只是将一些限制值放入 0 或 MAXINT),但这种变化通常是由于操作系统、CPUm 和运行时环境,而不是编译器。