【发布时间】:2018-04-21 21:09:24
【问题描述】:
我想根据其十六进制表示声明一个整数参数。有什么区别:
INTEGER(kind=int32), PARAMETER :: a = Z'FFFFFFFF'
INTEGER(kind=int32), PARAMETER :: b = int(Z'FFFFFFFF', kind=int32)
INTEGER(kind=int32), PARAMETER :: c = transfer(Z'FFFFFFFF', 1_int32)
(是的,我知道这只是-1。)
gfortran 似乎在编译过程中给了我一个整数溢出错误(有用地告诉我,我可以用-fno-range-check 忽略它)上面的a 和b,但不是c。
我需要使它与 Fortran 2003 兼容,因为此代码可能会使用其他地方的不同编译器进行编译。
【问题讨论】:
-
IIRC 在 Fortran 2003 和 2008 之间的规则发生了一些变化。您需要严格的 2003 吗?
-
软件编码标准为 Fortran 2003
标签: fortran fortran2003