Fortran 一条语句中多个变量的相同值赋值
有没有一种方法可以让我为不同的变量分配相同的值,而不用在一条语句中构造一个数组 例如,如果我有变量a、b、c、d和e,我可以分配类似的值吗Fortran 一条语句中多个变量的相同值赋值,fortran,fortran95,Fortran,Fortran95,有没有一种方法可以让我为不同的变量分配相同的值,而不用在一条语句中构造一个数组 例如,如果我有变量a、b、c、d和e,我可以分配类似的值吗 a=b=c=d=e=10.0 ? 我知道我可以在一行中完成: a=10.0; b=10.0; c=10.0; d=10.0; e=10.0 但这不是我想要的,因为如果我想在以后将值10.0更改为其他值,我必须在所有地方进行更改。第一个版本在Fortran中是不可能的。按照(2008)标准,转让为一般形式(第7.2.1.1章) 但是你为什么不试试这样的方
a=b=c=d=e=10.0
?
我知道我可以在一行中完成:
a=10.0; b=10.0; c=10.0; d=10.0; e=10.0
但这不是我想要的,因为如果我想在以后将值10.0更改为其他值,我必须在所有地方进行更改。第一个版本在Fortran中是不可能的。按照(2008)标准,转让为一般形式(第7.2.1.1章) 但是你为什么不试试这样的方法呢:
a=10.0; b=a; c=a; d=a; e=a
这样,以后只需更改a
的值 也许:
real, parameter :: NamedConst = 10.0
a=NamedConst; b=NamedConst; c=NamedConst; d=NamedConst; e=NamedConst
然后,如果您应该在多行中使用特殊值
NamedConst
,显然只有一个地方可以更改其值。来吧,Fortranners,您知道您想
equivalence(a,b,c,d,e)
现在所有的流氓都会有同样的价值。 你可能应该考虑使用数组而不是单独的变量,特别是如果它们有类似的用途:
real :: myarray(5)
myarray(:) = 10.0
另一个保持代码整洁的选项是,如果变量总是相同的,那么可以构造一个子例程,例如change_变量(a,b,c,d,e,10),使a,b,c,d和e都等于10。但是如果变量总是相同的,为什么要使用不同的变量呢?另一个想法:关于指针呢?也许代码已经用分散的a、b等编写,在这个阶段更改所有变量是不实际的。在我的情况下,我需要用相同的值初始化所有变量,或者在程序的某个点,我想在某个条件下使所有变量相等。因此,分配
a=10.0
然后说b=a
与写a=10.0的痛苦程度相同;b=10.0
。指针可以是另一种选择,但我想我无法摆脱对每个变量的赋值。我假设它们只初始化为相同的值。这是迄今为止我得到的最聪明的答案。但是,正如您所说,这只适用于初始化,因为它是一个声明,而不是一个语句:(
real :: myarray(5)
myarray(:) = 10.0