If statement if语句中出错,需要标量逻辑表达式
在子例程中,我尝试创建一条语句,但只有在我直接输入一个数字时,它才会起作用,只要我用变量替换该数字,它就会给出错误:If statement if语句中出错,需要标量逻辑表达式,if-statement,types,fortran,If Statement,Types,Fortran,在子例程中,我尝试创建一条语句,但只有在我直接输入一个数字时,它才会起作用,只要我用变量替换该数字,它就会给出错误: ||Error: IF clause requires a scalar LOGICAL expression| 在本例中,var是介于0和1之间的实数 if ( var%type3 < 0.5) then test = 1 end if 有人知道我们做错了什么吗。因为错误没有给我们任何线索,说明哪部分是错误的。从您的评论中va
||Error: IF clause requires a scalar LOGICAL expression|
在本例中,var是介于0和1之间的实数
if ( var%type3 < 0.5) then
test = 1
end if
有人知道我们做错了什么吗。因为错误没有给我们任何线索,说明哪部分是错误的。从您的评论中
var%type3
是一个实维度(1,1)
。这不是标量,var%type3<0.5
将是一个形状相同的数组
如错误消息所述,if
的测试条件应为标量逻辑。根据您要执行的操作,您的测试条件可以是非详尽列表之一:
var%type3(1,1)<0.5
ALL(变量%type3<0.5)
ANY(变量%type3<0.5)
IF(变量%type3(1,1)<0.5)则
打印*,“它有效”
如果结束
获取此错误的示例:
MODULE vardef
TYPE vartype
REAL :: type3(1, 1)
END TYPE vartype
END MODULE vardef
PROGRAM test
USE vardef
TYPE(vartype) var
var%type3(1, 1) = 0
IF ( var%type3 < 0.5 ) THEN
print *, 'IT WORKS'
END IF
RETURN
END PROGRAM test
模块vardef
类型变量类型
REAL::type3(1,1)
端型变量类型
端模块vardef
程序测试
使用vardef
类型(vartype)变量
变量%type3(1,1)=0
如果(变量%type3<0.5),则
打印*,“它有效”
如果结束
返回
结束程序测试
如果如您所述,var
是实数,var%type3
是什么?在Fortran中,实数没有可以使用%
符号访问的组件。在每个函数中,我都使用百分比符号及其类型作为after变量。这也适用于其他子例程。类型3定义为实尺寸(1,1)。然而,如果我删除该部分,只保留var<0.5,它将给出:| |错误:比较运算符的操作数
IF ( var%type3(1, 1) < 0.5 ) THEN
print *, 'IT WORKS'
END IF
MODULE vardef
TYPE vartype
REAL :: type3(1, 1)
END TYPE vartype
END MODULE vardef
PROGRAM test
USE vardef
TYPE(vartype) var
var%type3(1, 1) = 0
IF ( var%type3 < 0.5 ) THEN
print *, 'IT WORKS'
END IF
RETURN
END PROGRAM test