1
我正在学习Fortran。我遇到了这个错误,但我不知道这个原因。分配最大4字节和8字节整数时出错
INTEGER*1 :: i1
INTEGER*2 :: i2
INTEGER*4 :: i3
INTEGER*8 :: i4
i1 = 2**7 - 1
i2 = 2**15 - 1
i3 = 2**31 - 1 ! giving error
i4 = 2**63 - 1 ! giving error
i4 = 2**31 - 1 ! this also giving error
即使可变大小支持指定的值,我得到算术流错误。
我正在使用gfortran 4.8编译器。发生什么事?
2 ** 31是一个算术溢出。你是否尝试过:i3 = huge(i3) – Rob
不要学习指定变量类型的非标准方式,例如'INTEGER * 4'。学习'kind =','selected_int_kind'(以及它的亲属)以及由标准内在模块'iso_fortran_env'提供的参数,如'real64'。 –