Fortran 运行时错误 "bad integer for item 11 in list input"

Fortran runtime error "bad integer for item 11 in list input"

我收到引用以下代码行的运行时错误 "bad integer for item 11 in list input"。

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 项是 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) 并显式键入所有变量。