C++和GCC:GCC的C++实现如何处理除零?

Cha*_*hie 3 c++ compiler-construction gcc

只是出于兴趣.GCC的C++实现如何处理标准数字类型除以零?也有兴趣了解其他编译器如何在零分割方面工作.随意详细说明.这不仅仅是为了娱乐,因为它与单一的任务半关联.

干杯,Chaz

Lou*_*arg 9

它没有.通常发生的情况是,当除法指令的操作数为0时,CPU将抛出某种类型的内部异常,这将触发一个中断处理程序,该处理程序读取CPU上各种寄存器的状态并处理它,通常是通过转换它被发送回发送给程序并由任何注册信号处理程序处理的信号.对于像操作系统这样的大多数unix,它们都有一个SIGFPE.

虽然行为可能会有所不同(例如,在某些CPU上,您可以告诉CPU不要引发异常,通常它们只是将一些钳位值设置为0或MAXINT),这种变化通常是由于OS,CPUm和运行时的差异造成的.环境,而不是编译器.