我收到运行时错误“列表输入中第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编译器。
答案 0 :(得分:3)
列表中的第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
)并明确键入所有变量。