我正在开发NCEPLIBS-g2,这是NOAA的一个免费软件库,允许气象学家和气候科学家访问GRIB2数据。
我有一个警告:
121 | allones = Z'FFFFFFFF'
| 1
Warning: Conversion from ‘INTEGER(16)’ to ‘INTEGER(4)’ at (1) [-Wconversion]
这来自以下代码:
integer(4) :: ire00, allones
allones = Z'FFFFFFFF'
显然,BOZ常数Z'FFFFFFFF'被解释为整数(16(。
如何指示它是整数(4(,并使此警告静音?
问题的答案是将INT内在与所需的KIND说明符一起使用,例如INT(Z'FFFFFFFF',KIND(allones))
。这是符合标准的,您显示的用法不在Fortran 2018中,它的含义可能因实现而异。
您显示的赋值在Fortran 2023中是有效的,BOZ常数的解释与我上面显示的INT
表达式相同。关于这方面的更多信息,请参阅我在"我们都是这条总线上的僵尸"中的帖子"Fortran博士">