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

标签 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

返回(使用 PGI 或 gfortran):

32767
32767
2147483647
2147483647
9223372036854775807
9223372036854775807

我使用huge内部函数返回给定类型的最大数字。所以1_8显然与integer(8)是同一类型。这也适用于实数,尽管我没有在这里展示。

但是,我无法找到此功能的任何文档,并且我不记得在哪里学到的。我的问题是:

使用 _KIND 标准 fortran 吗?有人有这个资源吗?

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

最佳答案

从 Fortran 90 开始,它是标准 Fortran,但每种类型的有效种类值集以及种类值的含义取决于处理器。

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

我希望许多编译器手册(例如 - 请参阅当前 PGI Fortran reference manual 的第 2.2 节)和所有有关现代 Fortran 的合理教科书也会描述此功能。

关于fortran - 使用下划线定义种类/精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30362298/

相关文章:

assembly - 有什么方法可以判断变量是否被优化了?

fortran - 将 coarray 子数组传递给函数会给出数组的错误部分

fortran - 在 FORTRAN 中定义文件路径

c - makefile 将 fortran 库链接到 C 程序

c - 源代码找不到包含头文件?

c++ - 在 C++ 中使用 Fortran 模块与 std::thread

fortran - 绝对值和符号的四倍精度

python - 通过无法执行的并行Python执行Fortran子例程

fortran - Fortran中如何统一读取实数和复数?

optimization - 在 fortran 中访问虚拟变量会阻止优化吗?