【发布时间】:2015-05-05 14:37:38
【问题描述】:
我想编写一段代码,它可以找到我机器的所有可用整数类型并打印所有它们的范围。
找到种类并不是困难的部分,使用 selected_int_kind 我能够遍历所有可用的种类编号,直到我得到一个 -1 值,表明编译器不再可以表示整数。
这个过程产生了一个可用种类编号的数组,例如(/ 1 2 4 8 16/)(这是我的 gfortran 编译器的结果)
下一步是使用这个数组定义 5 种不同的整数,并询问最大可表示的整数是多少。 我的想法是使用一个可分配的整数,并且每次都使用其他类型的参数来分配它,比如
program main
integer,allocatable :: i
integer::j
integer,dimension(:)::nb_kind
call give_me_the_kinds(nb_kind)
for j=1,size(nb_kind)
allocate(i,kind=nb_kind(j))
print *,huge(i)
deallocate(i)
end program
但这对我来说并不奏效。有没有人有这方面的经验?我认为可以做到,但我不知道该怎么做。
【问题讨论】:
-
还有可能有用:stackoverflow.com/q/25534202。
-
我的问题更多是关于定义动态类型的可能性吗?你能帮我解决这个问题吗?
-
你不能让 kind-type 参数是动态的。也许我的第二个链接中的 hacky 答案可能是您想要的(因此这是一个更好的副本)?。
-
作为另一个评论,不值得回答:也考虑来自内部模块
iso_fortran_env的数组integer_kinds。
标签: dynamic integer fortran fortran90 data-kinds