处理浮点异常

缺省情况下,将在运行时忽略无效操作,例如 "除以零" , "除以无穷大" , "溢出" 和 "下流"。 但是,您可以使用 -qflttrap 选项 或调用 C 或操作系统函数 来检测这些类型的异常。 如果在不使用 -qflttrap 选项的情况下启用浮点陷阱,请使用 -qfloat=fenv 选项。

此外,您 可以向程序添加合适的支持代码,使程序在发生异常后继续执行,并修改导致异常的操作结果。

但是,由于涉及常量的浮点计算通常在编译时折叠,因此在运行时产生的潜在异常可能不会发生。 要确保 -qflttrap 选项捕获所有运行时浮点异常, 您可以使用 -qfloat=nofold 选项来禁止所有编译时折叠。

如果使用 AIX® 操作系统功能在浮点异常上启用硬件捕获,请使用 -qfloat=fenv 选项通知编译器可能会发生异常。