Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran ifort 15中的意外行为_Fortran - Fatal编程技术网

Fortran ifort 15中的意外行为

Fortran ifort 15中的意外行为,fortran,Fortran,我刚刚在ifort(ifort)15.0.0 2014072中遇到了以下问题 program integerkinds use iso_fortran_env implicit none integer(kind=selected_int_kind(15)):: j15 print *,'Selected Integer Kind 15:' print *, huge(j15) print *, int(huge(j15)) print *, int(huge(j

我刚刚在ifort(ifort)15.0.0 2014072中遇到了以下问题

program integerkinds
  use iso_fortran_env
  implicit none

  integer(kind=selected_int_kind(15)):: j15

  print *,'Selected Integer Kind 15:'
  print *, huge(j15)
  print *, int(huge(j15))
  print *, int(huge(j15),kind=selected_int_kind(15))

end program integerkinds
其输出为

 Selected Integer Kind 15:
   9223372036854775807
          -1
   9223372036854775807
编译器不应该根据int()的参数自动选择正确的返回类型吗?这一意外行为使我在群集上花费了大约2500小时的计算时间:(

文件说明(第9-80页):


根据此表,整数(8)作为参数应给出整数(8)结果类型为-1,但输出结果为-1。对我来说,这似乎是一个错误,但在我去给英特尔开发人员设置错误之前,我想再看一眼。在标准中,是否有什么我忽略的东西要求将-1作为返回值?否。该表是错误的或误导性的(多行在其他方面毫无意义,可能反映了某些兼容性选项的行为变化,但如果是这样,我不知道它是什么选项)。在标准Fortran中,INT泛型内在函数的结果类型仅取决于kind参数的存在和值。如果不存在kind参数,则结果具有默认整数种类,否则kind参数指定结果的种类

由于没有更改默认整数类型的编译选项,示例程序中第二次调用INT的参数值不能用该编译器的默认整数表示。您的代码不符合要求


虽然文本没有实质性的变化(除了可能变得更加混乱),但我注意到您链接到的文档是古老的。

否。该表是错误的或误导性的(多行在其他方面毫无意义,可能反映了某些兼容性选项的行为变化,但如果是这样,我不知道它是什么选项)。在标准Fortran中,INT泛型内在函数的结果类型仅取决于kind参数的存在和值。如果不存在kind参数,则结果具有默认整数种类,否则kind参数指定结果的种类

由于没有更改默认整数类型的编译选项,示例程序中第二次调用INT的参数值不能用该编译器的默认整数表示。您的代码不符合要求

虽然文本没有实质性的改变(除了可能变得更加混乱),但我注意到您链接到的文档是古老的

Argument Type                                        Result Type
INTEGER(1), INTEGER(2), INTEGER(4)                   INTEGER(4) 
INTEGER(1), INTEGER(2), INTEGER(4), INTEGER(8)       INTEGER(8)