[Fortran] 纯文本查看 复制代码 program main
implicit none
integer::a(10),b(5)
integer,allocatable::c(:)
allocate(c(8))
a=3
b=2
c=a c=b*c
end program main
代码如上
对于不可分配数组a,b, 当直接执行c=a*b时, 由于a,b大小不一致, 所以编译时会报错.
但是当c为可分配数组, 并且c与b大小不一致时, 却可以执行b*c这样的语句 (经过实验,c*b与b*c这样的语句,最终生成的数组的大小,与排在首位的数组一致), 并且不会抛出运行时错.
而且这一种处理方式无法通过手动为c分配空间进行解决, 但是这样的处理方式却有可能导致最终的计算结果存在一定的错误, 并且除了单步调试外, 可能没有很好的方法能检查出来这个地方.
这个问题应该可以在ivf2019和codeblocks 17.12附带的gfortran(我不确定具体版本)上重现.
|