当我尝试使用gfortran 4.4.7编译我的代码时,我收到以下错误消息:
错误:参数'intkind8'中的类型不匹配(1);通过INTEGER(4) 到INTEGER(8)。
使用ifort进行编译,除非我要求F2003标准,在这种情况下会给出类似的错误。
我的代码:
program kindDummy
implicit none
call takeIntKind4And8(0,0)
contains
subroutine takeIntKind4And8(intKind4, intKind8)
implicit none
integer(kind=4), intent(in) :: intKind4
integer(kind=8), intent(in) :: intKind8
print *, 'Integer(kind4): ', intKind4
print *, 'Integer(kind8): ', intKind8
end subroutine takeIntKind4And8
end program kindDummy
我想知道是否有一种优雅的方法可以让编译器将第一个0“转”为kind=4
整数,将第二个转换为kind=8
?
答案 0 :(得分:3)
在
#{
val testMap1true = testMap1.forall(_._2)
val testMap2true = testMap2.forall(_._2)
}#
#if(testMap1true && testMap2true)
<h1>All true</h1>
#elseif(testMap1true || testMap2true))
<h1>One map true</h1>
#else
<h1>Neither</h1>
#end
两个零都有默认类型。种类数字不可移植,但您的默认数字可能是4。
要生成0种,请使用call takeIntKind4And8(0,0)
:
0_8
我建议不要直接使用4和8并使用call takeIntKind4And8(0_4,0_8)
之类的整数常量,其中0_ip
是一个具有正确值的整数常量。有关详情,请参阅Fortran: integer*4 vs integer(4) vs integer(kind=4)。