使用下划线来定义种类/精度

Ros*_*oss 5 fortran

我一直在使用下划线将一个整数定义为fortran中的特定类型.

这是一段代码片段,用于演示具体1_8含义,例如:

  program main
  implicit none

  integer(2) :: tiny
  integer(4) :: short
  integer(8) :: long

  tiny = 1
  short = 1
  long = 1

  print*, huge(tiny)
  print*, huge(1_2)

  print*, huge(short)
  print*, huge(1_4)

  print*, huge(long)
  print*, huge(1_8)

  end program main
Run Code Online (Sandbox Code Playgroud)

返回(使用PGI或gfortran):

32767
32767
2147483647
2147483647
9223372036854775807
9223372036854775807
Run Code Online (Sandbox Code Playgroud)

我正在使用huge内部函数返回给定类型的最大数量.所以1_8显然与整数(8)相同.这也适用于实数,虽然我没有在这里显示.

但是,我一直无法找到这个功能的任何文档,我不记得我在哪里学到它.我的问题是:

使用_KIND标准的fortran?有没有人有这个来源?

编辑:有人指出我使用的类型值(2,4,8)不可移植 - 例如,不同的编译器/机器可能为巨大的(1_4)提供不同的值.

Ian*_*anH 6

它是Fortran 90的标准Fortran,尽管每种类型的有效种类值和种类值的含义都取决于处理器.

Fortran标准是什么是"标准"Fortran的权威来源.ISO/IEC 1539-1:2010是您可以购买的当前版本,或者可以从各个地方获得该文档的出版前草稿. https://gcc.gnu.org/wiki/GFortranStandards有一系列有用的链接.

我希望许多编译器手册(例如 - 参见当前PGI Fortran参考手册的 2.2节)和现代Fortran上所有合理的教科书也会描述这个特性.