fortran中的等价语句

时间:2011-12-19 01:48:13

标签: fortran

我正在将应用程序从fortran移植到JAVA。我想知道如果等价是在两种不同的数据类型之间进行转换。

如果我输入强制转换,我可能会丢失数据,还是应该将其作为字节数组传递?

2 个答案:

答案 0 :(得分:3)

您必须完全理解旧的FORTRAN代码。 EQUIVALENCE共享内存而不转换不同数据类型之间的值。也许程序员通过重叠未同时使用的数组来保存内存,并且可以忽略EQUIVALENCE。也许他们根据特定平台的二进制表示做了一些非常棘手的事情,你需要弄清楚他们在做什么。

在现代Fortran中使用EQUIVALENCE是极其没有理由的。在大多数情况下,需要将位从一种类型转移到另一种类型而不进行转换,而应使用TRANSFER内部函数。

答案 1 :(得分:2)

来自http://www.fortran.com/F77_std/rjcnf0001-sh-8.html#sh-8.2

  

EQUIVALENCE语句用于指定程序单元中两个或多个实体共享存储单元。这会导致共享存储单元的实体的关联。

     

如果等价实体具有不同的数据类型,则EQUIVALENCE语句不会导致类型转换或暗示数学等价。如果变量和数组是等价的,则变量没有数组属性,数组没有变量的属性。

因此,请考虑Fortran代码中EQUIVALENCE'的原因,并从那里决定如何继续。您的问题中没有足够的信息来评估转换它的意图或最佳方式。