fortran中循环与数组

请问fortran中循环i=1,4与i=1:4有什么区别
就比如M(4)=(/(1,i=1,4)/)可以把逗号改为冒号吗

在Fortran中,循环的语法有多种形式,其中包括使用逗号(,)和冒号(:)的不同方式。

  1. 使用逗号(,)表示循环范围:

    • i = 1, 4 表示循环变量 i 的取值范围是从 1 到 4,包括 1 和 4。
    • 在这种情况下,循环会依次执行四次,循环变量 i 的取值分别是 1、2、3 和 4。
  2. 使用冒号(:)表示循环范围:

    • i = 1:4 表示循环变量 i 的取值范围是从 1 到 4,包括 1 和 4。
    • 在这种情况下,循环会依次执行四次,循环变量 i 的取值分别是 1、2、3 和 4。

两种表示方式在语义上是等价的,都表示循环变量从 1 到 4 进行循环。你可以根据个人喜好选择使用逗号或冒号来表示循环范围。

至于你提到的将逗号改为冒号的情况,是不可以直接替换的。在Fortran中,循环范围的表示方式是固定的,使用逗号或冒号取决于编程者的习惯和可读性的需求。

1、普通循环(包括隐循环),都使用前者,比如
do i=1,4
M(i)=i
end do

M(1:4)=(/(i,i=1,4)/)
2、只有在forall、do concurrent 才用后者。这俩是为了便于并行创造的,也就是说4个元素可以同时执行。
forall(i=1:4)
M(i)=i
end forall

do concurrent (i=1:4)
M(i)=i
end do