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) のような明示的なキャストを使用する価値があると思います。これにより、コンパイラによる警告も回避されます。

ループの場合、do di=1,da は許されますか?

トリッキーですが、コンパイラがループ カウンターとして長い整数をサポートしている場合は、うまくいくと思います。しかし、私はそれで慎重になります。

stackof(1_isp,da) を呼び出すことはできますか

いいえ、タイプ、種類、ランクが一致している必要があります。

于 2013-11-03T05:56:59.430 に答える