【发布时间】:2019-04-10 06:52:04
【问题描述】:
从这个网站 (http://www.mathcs.emory.edu/~cheung/Courses/561/Syllabus/6-Fortran/kind.html) 了解 Fortran 中的 selected_int_kind 和 selected_real_kind 语句后,我在输入此代码时遇到了这个问题:
program large_integers
integer, parameter :: Single = selected_int_kind(precision(1.e0))
integer, parameter :: Double = selected_int_kind(precision(1.d0))
integer(Single), parameter :: sNaN = Z"7FC0000"
integer (single) a
real(single) b
integer (double) c
real(double) d
write(*,*) 'a = ', a, 'b = ',b , 'c = ' , c, 'd= ', d , sNaN
end program large_integers
运行后,它给了我这个结果:
a = 1 b = -4.78538941E-39 c = 4294954096 d= 3.1846750471760586E-314 133955584
首先,精度不是为 selected_int_kind 定义的,而只是为 selected_real_kind 定义的,但在这里。
其次,如果 single 和 double 都是整数类型,它如何给 b 和 d 一个真实的值?
第三,sNaN在定义为整数的同时持有一个字符是如何工作的?
如果我的问题看起来很愚蠢,请原谅。感谢您的帮助。
【问题讨论】:
-
我相信
sNAN的 BOZ 常数应该是INT()的参数以符合标准。
标签: fortran