Arrays 如何逻辑检查IF语句中数组的形状?
是否可以使用if语句检查数组是否为特定形状?我尝试了以下方法,但没有成功Arrays 如何逻辑检查IF语句中数组的形状?,arrays,if-statement,fortran,Arrays,If Statement,Fortran,是否可以使用if语句检查数组是否为特定形状?我尝试了以下方法,但没有成功 program main implicit none ! Local variables. integer, dimension(3,3) :: a integer, dimension(3,3) :: b ! Check if a is a 3x3 array. if (shape(a) == shape(b)) print *, "Works" end program ma
program main
implicit none
! Local variables.
integer, dimension(3,3) :: a
integer, dimension(3,3) :: b
! Check if a is a 3x3 array.
if (shape(a) == shape(b)) print *, "Works"
end program main
但我得到了一个错误:
错误:位于(1)的IF子句需要一个标量逻辑表达式(shape(a)=shape(b))
是逻辑数组[T]
,因为它将a
的第一秩与b
的第一秩进行比较,依此类推
您需要一个逻辑标量:(all((shape(a)==shape(b))
确保每个维度都是相同的