1

最近,我不得不提高代码中某些整数变量的精度。现在我混合了整数类型,我想知道关于它们的基本知识。例如,假设我有这个变量:

integer, parameter    :: idp = selected_int_kind(18) 
integer, parameter    :: isp = selected_int_kind(8) 

integer(isp)       :: a,i
integer(idp)       :: da,di

任务没问题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)

谢谢你。

4

1 回答 1

0

分配 a=da 可以吗?

是的,如果 da 在 isp 范围内,您可能会收到警告。

那么 da=1_isp 呢?

是的,见上文。

还是da=da+1?

相同的。

在大多数情况下,我认为使用像 da = int(a, kind=idp) 这样的显式转换是值得的。这也将避免编译器发出警告。

在循环的情况下,是否允许 di=1,da?

棘手,我想它可能会起作用,如果编译器支持长整数作为循环计数器。但是,我会对此保持谨慎。

我可以调用 stackof(1_isp,da)

不,类型、种类和等级必须匹配。

于 2013-11-03T05:56:59.430 回答