为什么gfortran在没有-fno-range-check选项的情况下无法编译64位整数的程序?

问题描述 投票:0回答:1

如果没有选项,我无法编译这个简单的程序

-fno-range-check
:

program big_int
  use ISO_FORTRAN_ENV

  integer(kind=int64) :: my_int
  print *, huge(my_int)
  my_int = 9223372036854775807
  print *, my_int
end program big_int

命令

gfortran my_pgm.f90
引发此错误:

错误:对于 (1) 处的同类来说,整数太大。可以使用选项“-fno-range-check”禁用此检查

gfortran -fno-range-check my_pgm.f90
编译完美。但是,我对使用这个选项有点无聊。 还有其他选择可以使用吗? (gfortran 版本:GNU Fortran (GCC) 13.2.1 20240316) 感谢您的回答。

fortran gfortran
1个回答
0
投票

在 Fortran 中,对于非默认类型的文字,必须在其类型后添加下划线。

9223372036854775807
是 int64 文字,不适合默认整数类型。您必须在其后附加“_int64”。

program big_int
  use ISO_FORTRAN_ENV

  integer(kind=int64) :: my_int
  print *, huge(my_int)
  my_int = 9223372036854775807_int64
  print *, my_int
end program big_int
© www.soinside.com 2019 - 2024. All rights reserved.