Стандарт IEEE 1003.1 определяет SIGFPE как:
Операция с ошибочной арифметикой c.
И в действительности не упоминается с плавающей запятой операции. Причина этого четко не указана, но вот мое мнение.
x86 FPU может работать как с целочисленными данными, так и с плавающей запятой одновременно с такими инструкциями, как FIDIV
, поэтому неясно, будет ли деление плавающих данных poitn на целое ноль приведет к исключению с плавающей или целочисленной точкой.
Кроме того, до 80486 (выпущенного в том же году, что и стандарт ISO / ANSI C) процессоры x86 не имели Возможности с плавающей точкой вообще, сопроцессор с плавающей точкой был отдельным чипом. Вместо чипа можно использовать программную эмуляцию с плавающей точкой, но в ней используется встроенный в ALU ЦП (целочисленная арифметическая c -логическая единица), который генерирует целочисленные исключения.