Fortran 90逻辑类型不匹配

Fortran 90逻辑类型不匹配,fortran,fortran90,intel-fortran,Fortran,Fortran90,Intel Fortran,我试图传递一个简单声明为logical::invar 将接收变量声明为 逻辑(x):因瓦 现在x被定义为 INTEGER,参数::x=KIND(.TRUE.) x的定义是什么意思?我搜索了kind(.true.),但所有结果都忽略了这一点。请专家澄清一下 如果这与编译器有关,我正在使用英特尔编译器。变量,如实数、整数,甚至逻辑变量可以是不同的种类。通常,这对于区分单精度实数和双精度实数很重要。以我的经验来看,没有理由去摆弄一种逻辑的 显然,写这段代码的人会有不同的想法。当您以通常的方式声明逻辑时

我试图传递一个简单声明为
logical::invar
将接收变量声明为

逻辑(x):因瓦

现在
x
被定义为

INTEGER,参数::x=KIND(.TRUE.)

x
的定义是什么意思?我搜索了
kind(.true.)
,但所有结果都忽略了这一点。请专家澄清一下


如果这与编译器有关,我正在使用英特尔编译器。

变量,如实数、整数,甚至逻辑变量可以是不同的
种类。通常,这对于区分单精度实数和双精度实数很重要。以我的经验来看,没有理由去摆弄一种逻辑的

显然,写这段代码的人会有不同的想法。当您以通常的方式声明逻辑时

logical :: L1
变量
my_logical
为默认类型。当您使用

integer, parameter :: x = KIND(.TRUE.)
integer(x) :: L2
它的类型是
x
,定义为
.true.
。棘手的是
.true.
几乎肯定也是默认类型。(标准要求默认类型为
.FALSE.


因此,在上面的例子中,
L1
L2
属于同一类。我不知道为什么有人会费心将默认逻辑类型定义为
x
,但您不必担心它。

变量,如实数、整数,甚至逻辑变量都可能不同
类型。通常,这对于区分单精度实数和双精度实数很重要。以我的经验来看,没有理由去摆弄一种逻辑的

显然,写这段代码的人会有不同的想法。当您以通常的方式声明逻辑时

logical :: L1
变量
my_logical
为默认类型。当您使用

integer, parameter :: x = KIND(.TRUE.)
integer(x) :: L2
它的类型是
x
,定义为
.true.
。棘手的是
.true.
几乎肯定也是默认类型。(标准要求默认类型为
.FALSE.


因此,在上面的例子中,
L1
L2
属于同一类。我不知道为什么有人会费心将默认逻辑类型定义为
x
,但您不必担心。

您在标题中提到了一些不匹配的地方。你有没有收到任何错误,或者你只是担心是否一切都是它应该是好的点@VladimirF-如果有不匹配,请张贴错误和代码。如果你只是想理解,请看我的答案。抱歉,是的,如果我不将因瓦声明为逻辑(x)::因瓦,我确实会得到一个不匹配的错误。错误只是说类型不匹配。所以我试着理解这个语法,这样我以后就可以避免它了。你在标题中写了一些不匹配的地方。你有没有收到任何错误,或者你只是担心是否一切都是它应该是好的点@VladimirF-如果有不匹配,请张贴错误和代码。如果你只是想理解,请看我的答案。抱歉,是的,如果我不将因瓦声明为逻辑(x)::因瓦,我确实会得到一个不匹配的错误。错误只是说类型不匹配。因此,我试图理解这种语法,以便将来可以避免它。
.true。
不仅仅是默认类型的“几乎肯定”,而是默认类型的“完全、完全、不能更确定,绝对是,如果不是,就应该有人被炒鱿鱼。谢谢你的解释:-)我现在明白了。
.true。
不仅仅是默认类型的“几乎可以肯定”,但默认类型的“完全,完全,不能更确定,绝对是,如果不是,某人应该被解雇”。谢谢解释:-)我现在明白了。