Dav*_*idS 5 arrays string fortran
考虑以下Fortran程序:
program test
character(len=:), allocatable :: str
allocate(character(3) :: str)
print *, len(str)
str = '12345'
print *, len(str)
end program
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了预期的结果:
3
5
Run Code Online (Sandbox Code Playgroud)
也就是说,当str设置为'12345'时,字符串的大小从3调整为5.相反,如果我使用动态字符串数组,则不然.例:
program test
character(len=:), allocatable :: str(:)
allocate(character(3) :: str(2))
print *, len(str(1)), len(str(2))
str(1) = '12345'
print *, len(str(1)), len(str(2))
end program
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
3 3
3 3
Run Code Online (Sandbox Code Playgroud)
所以str(1)的集合没有改变字符串的长度.我使用ifort 16.0.2和gfortran 5.3.1获得了相同的行为.我的问题是这种行为是否与最新的Fortran标准一致,或者这是编译器中的一个错误?
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |