Fortran 错误 #6366:数组表达式的形状不符合

Yun*_*Shi 5 arrays fortran

我在编译我的 Fortran 代码之一时遇到了此错误消息。我发现了一些关于相同错误的类似帖子,但这些帖子中的情况均不适用于我的情况。我将不胜感激这里提供的任何答案或帮助。提前致谢!

(代码实在是太长了,所以我只删掉了相关的句子。)

=================================================== =

DIMENSION A(20), COORDS(3)
REAL  B, C, X, Y, Z

B = 1.0

X = COORDS(1)
Y = COORDS(2)
Z = COORDS(3)

DO I = 1,3
  A(I) = COORDS(I)
END DO

C = SQRT ( X**2.0 + Y**2.0 ) + B
Run Code Online (Sandbox Code Playgroud)

=================================================== =

错误消息指向最后一行: 错误#6366:数组表达式的形状不符合。[ C]

如果我注释掉+ B,则不会发生错误。

我就是不明白。数组的元素COORDS被传递给标量变量X, Y, Z。为什么它们和B(或C)不一致?

我知道 Fortran 数组一定有一些我不太理解的地方。如果您发现任何错误,请指出我的错误。

多谢!

贾斯汀

M. *_* B. 3

dimension代码中的其他地方是否有针对这些变量的声明?错误消息似乎指向C;注释掉+B消除了错误似乎更明确地指出了B

这就是为什么我喜欢在一行中声明变量的所有特征。例如,

real, dimension (20) :: a
Run Code Online (Sandbox Code Playgroud)

代替:

dimension A(20)
real A
Run Code Online (Sandbox Code Playgroud)

  • 更详细地说 - 编译器认为 B 是一个数组,但 C、X 和 Y 不是。在表达式中添加 +B 会将整个表达式变成一个数组,但如果 C 不是相同形状的数组,则会出现错误。在这种情况下,提供一个小而完整的示例来显示问题会更有帮助,而不是摘录或释义,因为这些示例通常会遗漏关键细节。 (2认同)