Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fortran语言中的等价语句_Fortran - Fatal编程技术网

fortran语言中的等价语句

fortran语言中的等价语句,fortran,Fortran,我正在将应用程序从fortran移植到JAVA。我想知道如果两种不同的数据类型之间存在等价性,如何转换 如果键入cast,可能会丢失数据,或者应该将其作为字节数组传递?来自: 等价语句用于指定程序单元中两个或多个实体对存储单元的共享。这会导致共享存储单元的实体关联 如果等价实体具有不同的数据类型,则等价语句不会导致类型转换或暗示数学等价。如果变量和数组相等,则变量不具有数组属性,数组也不具有变量的属性 >,考虑FORTRAN代码中等价的原因,并决定如何继续进行。您的问题中没有足够的信息来评估意

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

如果键入cast,可能会丢失数据,或者应该将其作为字节数组传递?

来自:

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

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


>,考虑FORTRAN代码中等价的原因,并决定如何继续进行。您的问题中没有足够的信息来评估意图或转换意图的最佳方式

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


在现代Fortran中使用等价性的理由非常少。在大多数情况下,如果位需要从一种类型传输到另一种类型而无需转换,则应使用传输内在函数。

这实际上取决于为什么首先使用等效-是为了节省内存,还是为了提供结构,还是以不同的表示形式提供相同的数据?我觉得这是一个非常可怕的特性,它使FORTRAN代码的理解和调试变得非常复杂。将其移动到Java需要一些额外的注意。代码:程序检查等价整数*8 intarray4 real*8 realarray4 equivalenteralarray,intarray realarray3=3 intarray4=4 realarray1=1.0 realarrary2=2.0 do i=1,4 write,'All real',realarrayi enddo i=1,4 write,“All int”,intarrayi enddo i=1,3 write,“Some real”,realarrayi enddo write,“Last int”,intarray4 endout:All real 1。都是真的。都是真的。全部真实1.97626258E-323全部真实4607182418800017408全部真实4611686018427387904全部真实4613937818241073152全部真实4部分真实1。一些真正的2。一些真正的3。上一次,我尝试了一个示例代码来理解等价性是如何工作的。我想知道内部存储数据的格式是什么,尽管内存位置相同,但为什么它会以两种不同的格式打印数据。