Fortran变量类型转换

Fortran变量类型转换,fortran,fortran77,Fortran,Fortran77,快速提问。 我有一个带有变量声明的fortran77子例程 DIMENSIONS HH(13, 1000) 我假设因为没有指定类型,所以这个变量是一个整数数组。在节目的后面,我有一个循环,其中有以下一行: HH(2,N) = HH(4,N) + W2 W2未在子例程中显式声明,也未作为参数传递。我假设默认情况下它是一个实变量 我猜对于上面的命令,W2在被添加到HH(4,N)之前被转换为整数。这是正确的吗 抱歉,如果这是最基本的。在Fortran 77中,除非另有定义,否则以I、J、K、L、M

快速提问。 我有一个带有变量声明的fortran77子例程

DIMENSIONS HH(13, 1000)
我假设因为没有指定类型,所以这个变量是一个整数数组。在节目的后面,我有一个循环,其中有以下一行:

HH(2,N) = HH(4,N) + W2
W2未在子例程中显式声明,也未作为参数传递。我假设默认情况下它是一个实变量

我猜对于上面的命令,W2在被添加到HH(4,N)之前被转换为整数。这是正确的吗


抱歉,如果这是最基本的。

在Fortran 77中,除非另有定义,否则以I、J、K、L、M或N开头的变量都是隐式的
整数。所有其他变量都隐式地
REAL
。这意味着您的数组HH是实的。结果如何

HH(2,N) = HH(4,N) + W2

将是
REAL
而不涉及隐式转换。

只是出于兴趣,为什么您认为在代码的一部分中隐式类型的变量将是
整数
,代码不同部分的另一个隐式类型变量将是
REAL
?我了解到fortran中变量的默认类型是REAL,除非变量名以“I”和“N”之间的字母开头。因为我是一个白痴,我突然想到HH在这个范围内,并且想知道fortran是如何处理假定的类型转换的,这样我就可以在C#中复制它。但你解决了我的困惑:o)这仍然适用,即使在Fortran 2008中也是如此!这就是强烈建议使用“隐式无”的原因,这样,如果忘记显式键入变量,隐式键入将不适用。或者使用编译器选项获得相同的效果,例如gfortran的-fimplicit none。