我使用分配时的自动分配来计算两个数组的差异,边界从 0 开始:
program main
implicit none
integer, allocatable :: a(:), b(:), c(:)
allocate(a(0:10))
allocate(b(0:10))
a = 1
b = 2
write (*,*) lbound(a)
write (*,*) lbound(b)
c = b - a
write (*,*) lbound(c)
end program main
Run Code Online (Sandbox Code Playgroud)
gfortran 和 ifort 都给出输出:
0
0
1
Run Code Online (Sandbox Code Playgroud)
为什么 c 与 a 和 b 的界限不同?是否有一种简短(没有显式分配)的方法来确保 c 具有相同的界限?
为什么 c 不具有与 a 和 b 相同的界限?
a
因为它应该被分配到与and相同的形状,b
并且从右侧表达式的下界开始。这b-a
是一个表达式,它从 1 开始,任何数组算术运算的结果都将这样开始。如果b
和a
从不同的索引开始怎么办?)
是否有一种简短(没有显式分配)的方法来确保 c 具有相同的界限?
不。但您至少可以使用mold=a
或显式分配source=a
。
归档时间: |
|
查看次数: |
169 次 |
最近记录: |