【问题标题】:Fortran runtime error "bad integer for item 11 in list input"Fortran 运行时错误“列表输入中第 11 项的整数错误”
【发布时间】:2015-06-11 01:59:29
【问题描述】:

我收到运行时错误“列表输入中第 11 项的错误整数”引用以下代码行。

read(2,*)a,b,c,d,e,f,g,h,theta1,phi1,k,l,m,n,o,
 $             p,theta2,phi2,s,theta3,phi3,
 $             r1,x1,y1,r2,x2,y2,r3,x3,y3,z1,z2,z3 

读取的行是

1   255.11211   0.2876  165.11404   90  4   8   0.19173 90  165.11404   0.09587 90  345.11404   4   4   0.0764  89.99915    -64.51149   0.11131 90.0015 24.23892    470.10565   -454.32263  120.7902    264.91144   114.00389   -239.12589  322.2894    293.87778   132.3114    0.01236 0.00697 0.00006 0.42619 -0.19278

所以是整数和实数的混合,但我认为这没关系,因为我使用 * 格式描述符而不是指定格式。

我正在使用 gcc 编译器。

【问题讨论】:

  • 第 11 项是一个浮点数。 假设您正在使用隐式类型,k 是一个整数。您可以将整数读入实数,但不能将实数读入整数。
  • 是的,我正在使用隐式类型。为什么 k 自动成为整数,更重要的是,我该如何更改它?
  • 没关系。我想到了。我会在这里留下一张便条,以备后人之用。由于隐式类型,变量名称决定了它的类型。 docs.oracle.com/cd/E19957-01/805-4939/z40007365fbc/index.html 谈论字母表示整数的含义。

标签: io fortran


【解决方案1】:

您列表中的第 11 项是 0.09587,一个真实的。您正在使用列表定向输入,对于实数,它使用F 编辑描述符(Fortran 2008 Cl. 10.10.3 第 4 段)解释为数值。对应于F 编辑描述符的输入列表项必须是实数或复数(Fortran 2008 Cl. 10.7.2.3.1 第 1 段)。

要解决此问题,您需要将 k 定义为实变量。您在评论中注意到您正在使用隐式类型(其中以 i-n 开头的变量是整数类型,其余的默认情况下是实数)。要显式声明 k 为实数,请使用:

real :: k

最佳做法是禁用隐式键入 (implicit none) 并显式键入所有变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多