最近,我不得不在代码中增加一些整数变量的精度。现在我混合了整数种类,我想知道它们的基本内容。例如,假设我有这些变量:
integer, parameter :: idp = selected_int_kind(18)
integer, parameter :: isp = selected_int_kind(8)
integer(isp) :: a,i
integer(idp) :: da,di
asignment a=da
可以吗?那da=1_isp
呢?还是da=da+1
?
如果允许循环do di=1,da
?或者我必须做do di=1_idp,da
?
在案件中:
subroutine stackof(b,c)
integer(isp) :: b,c
.....
我可以致电stackof(1_isp,da)
谢谢。
答案 0 :(得分:0)
asignment a = da好吗?
是的,如果da在isp范围内,您可能会收到警告。
那么da = 1_isp呢?
是的,见上文。
或da = da + 1?
相同。
在大多数情况下,我认为使用da = int(a,kind = idp)这样的显式转换是值得的。 这也将避免编译器发出警告。
在循环do di = 1的情况下,允许da?
如果编译器支持长整数作为循环计数器,我猜它可能会有效。但是,我会对此保持谨慎。
我可以调用stackof(1_isp,da)
不,类型,种类和等级必须匹配。