fortran - 应用于可分配字符串时,gfortran 中的调整错误
问题描述
我正在修改使用 ifort 开发的程序以与 gfortran 一起使用,并且我遇到了调用adjustl
可分配字符串的问题。以下程序在使用 gfortran 编译时会产生意外的输出:
program compilercheck
implicit none
character(len=:), allocatable :: string
string = " Hi" !Note leading space
string = adjustl(string(2:))
if(string == "Hi") then
write(*,*) "You compiled with ifort"
else
write(*,*) "You compiled with gfortran"
endif
end program compilercheck
它没有像预期的那样string
变成“Hi”(并且在使用 ifort 编译时),它最终变成了“H”。可以通过将调用更改为adjustl(...)
into来解决该错误adjustl(trim(...))
,但是这会影响结果(没有尾随空格)似乎很奇怪。gfortran 中是否存在错误,或者代码是否超出了 ifort 允许的 fortran 规范?我正在使用 gfortran 7.5.0 版作为参考。
解决方案
推荐阅读
- flutter - Flutter - 可以在 MyApp 中放置状态吗?
- javascript - 根据 javascript 函数的结果设置帖子的输入值
- spring - @Value 未设置在一个特定的类中
- matlab - 如何在 Matlab 中将 uifigure 设为当前的
- python - 什么是正则表达式,它将返回具有特殊字符的单个单词名称 | (管道)
- r - 从 R 中另一个字符向量中的字符向量中检测任何模式
- latex - How can I wrap lines from an input text file to my margins in latex?
- postgresql - 如何在 python postgresql 应用程序中使用 pouch-couch db?
- c - C从二进制文件中读取值然后打印它们
- java - 错误:不再支持源选项 6。使用 7 或更高版本。反编译 MCP 时