2014-05-14 57 views
3

有没有一种方法可以为不同变量分配相同的值,而无需在单个语句中构建数组?单个语句中多个变量的相同值赋值

举例来说,如果我有变量A,B,C,Dē,可我给你像

a=b=c=d=e=10.0 

我知道我可以在一个单一的线做:

a=10.0; b=10.0; c=10.0; d=10.0; e=10.0 

但是,这不是我想要的,因为如果我要10.0以后的值更改为别的, 我必须作出改变无处不在。

任何帮助?

回答

2

来吧Fortranners,你知道你要...

equivalence(a,b,c,d,e) 

现在所有那些流氓将不得不在任何时候都相同的值。

+1

我假设他们只被初始化为相同的值。 –

+0

这是迄今为止我得到的最明智的答案。然而,正如你所说,这只适用于初始化,因为它是*声明*,而不是*声明*。 :( – hbaromega

3

第一个版本在Fortran中是不可能的。继(2008)标准,分配的一般形式的(CH 7.2.1.1)

variable = expr 

但是你为什么不试着这么做:

a=10.0; b=a; c=a; d=a; e=a 

这样一来,你只之后需要更改a的值!

+0

另一种选择,以保持代码的整洁,如果变量总是相同的,一个子程序可以构造如使变量a,b,c,d和e都等于10的change_variables(a,b,c,d,e,10)。 – Miguel

+1

但是,如果变量总是相同,为什么使用不同的变量?另一个想法:如何指针? –

+0

也许代码已经写入了a,b等等,并且在这个阶段改变所有的变量是不现实的。 – Miguel

0

也许:

real, parameter :: NamedConst = 10.0 

a=NamedConst; b=NamedConst; c=NamedConst; d=NamedConst; e=NamedConst 

然后,如果你要在一个以上的线路上使用特殊值NamedConst,显然改变其值一个地方。

1

你或许应该考虑使用数组,而不是单个变量,尤其是如果它们提供类似用途:

real :: myarray(5) 

myarray(:) = 10.0 
相关问题