2013-10-18 22 views
1

编译我的一个Fortran代码时遇到此错误消息。我发现了一些关于同样错误的类似帖子,但这些帖子中没有任何情况适用于我的情况。我很感谢在这里提供的任何答案或帮助。提前致谢!Fortran错误#6366:数组表达式的形状不符合

(代码是很长,所以我只能切出相关的那些句子。)

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

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 

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

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

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

我只是不明白。数组COORDS的元素被传递给标量变量X, Y, Z。他们如何与B(或C)不符合?

我知道必须有一些我不太了解Fortran数组的东西。如果你发现任何问题,请指出我的错误。

非常感谢!

贾斯汀

回答

2

是否有dimension声明在其他地方对任何这些变量的代码?错误消息似乎指向C;那个注释掉+B消除错误似乎更加扎实指向B

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

real, dimension (20) :: a 

代替:

dimension A(20) 
real A 
+1

更详细 - 编译器认为,B是一个数组,但C,X和Y不是。在表达式中添加+ B会将整个表达式转换为数组,但如果C不是同一形状的数组,那就是错误。在这种情况下,提供一个小而完整的例子来说明问题会更有帮助,而不是摘录或释义,因为这些例子通常会遗漏关键细节。 –