Fortran 2003及以后标准中整数除以零的行为是否未定义?
Fortran 2003及以后标准下整数除以零的行为疑问
示例代码
integer::i i=0 print*,0/i print*,1/i end
不同编译器的运行结果
- 新版本编译器(gfortran 13.1.0 和 ifx 2024.1.2)生成的可执行文件输出两个零
- 旧版本编译器(gfortran 7.4.0)生成的可执行文件仅输出一个零,随后因
SIGFPE: Floating-point exception - erroneous arithmetic operation中断执行,尽管这并非浮点运算
标准相关说明
根据Fortran解释文档(10.1.5.2.2 整数除法):“[整数除法]的结果是最接近数学商且介于零和数学商之间(含两端)的整数。”
但文档中未找到整数除以零的处理说明。
核心问题
依据Fortran 2003及以后的标准,执行该代码的正确结果是什么?或者该行为属于未定义?
(曾有关于旧版本Fortran的帖子提出类似问题,但未解答作者疑问,本文聚焦Fortran 2003及以后标准。)
内容的提问来源于stack exchange,提问作者V T
相关产品推荐
相关产品推荐

