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_Fortran95 - Fatal编程技术网

Fortran 一条语句中多个变量的相同值赋值

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,我可以分配类似的值吗

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