我编译并运行这个简单的 FORTRAN 77 程序:
program test
write(6,*) '- - - - - - - - - - - - - - - - - - - - - - - - - - ',
& '- - - - - - - - - - - - - - - - - - - - - - - - - -'
write(6,'(2G15.5)') 0.1,0.0
end
gfortran
或f95
输出为:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.0000
它pgf77
是:
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.00000E+00
和g77
或ifort
:
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.0000
出现了几个问题:
为什么 0.0 按格式要求打印时有四位小数而不是五位
G15.5
?这符合规范吗?为什么pgf77
写得不一样?我猜
- - - - - -
最后三个编译器的行中的换行符是由于输出行长度的一些限制......有没有办法增加这个限制,或者在编译时强制单行写入?
顺便说一句,所需的输出是
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0.10000 0.00000
与上述都不匹配。