gpt4 book ai didi

arrays - 隐含 do 在数组构造函数中构造重复标量值

转载 作者:行者123 更新时间:2023-12-02 08:30:28 28 4
gpt4 key购买 nike

我试图弄清楚为什么在数组构造函数内的 do 构造之前放置标量会产生它所得到的答案。

我一般理解 do 结构,(/(i,i=1,5)/) 相当于 (/1,2,3,4,5/)

real, dimension(4) :: a
integer :: i
a=(/(50,i,i=1,2)/)

这会产生数组50.0000000, 1.00000000, 50.0000000, 2.00000000。最多我预计会出现错误,因为步长不会产生足够的值来填充数组。

最佳答案

使用多个 50 生成的数组是预期的数组。

部分问题文本与代码发生的情况不匹配:

the placement of a scalar before a do construct inside an array constructor

[(50,i,i=1,2)] 中(为了清楚起见,使用 Fortran 2003 [...])标量值 50 不是隐含的 do 的“之前”,而是其中明确的一部分。这可以与

a = [50, (i,i=1,3)]

这将生成构造数组[50, 1, 2, 3]

数组构造函数隐含操作的正式语法是

( ac-value-list , ac-implied-do-control )

因此可以看出,多个值可以是隐含 do 控制范围的一部分,尽管通常只使用单个值。对于这样的多个值,它们都会针对隐含 do 的每次迭代进行评估(并且 50 每次都会评估相同的值)并在数组构造中使用。

关于arrays - 隐含 do 在数组构造函数中构造重复标量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56737074/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com