16進表現に基づいて整数パラメータを宣言したいと思います。違いは何ですか:16進定数
INTEGER(kind=int32), PARAMETER :: a = Z'FFFFFFFF'
INTEGER(kind=int32), PARAMETER :: b = int(Z'FFFFFFFF', kind=int32)
INTEGER(kind=int32), PARAMETER :: c = transfer(Z'FFFFFFFF', 1_int32)
は(そして、はい、私はこれがちょうど-1
であることを知っている。)
gfortran
は、(親切に私はそれを無視することができることを私に言って、コンパイル時に私に整数オーバーフローのエラーを与えているようです-fno-range-check
で)上記のa
およびb
では、しかしcではない。
このコードは別のコンパイラでコンパイルされる可能性があるため、Fortran 2003に準拠させる必要があります。
IIRC Fortran 2003と2008の間にルールに若干の変更がありました。厳密には2003年が必要ですか? –
ソフトウェア状態Fortran 2003のコーディング規格 – chw21