回 帖 发 新 帖 刷新版面

主题:intel fortran中real和real(kind=8)的区别

我在子函数中计算得到
a=2.48 (比如),类型为:real
调用的时候给的实参是Real(kind=8),结果就变成了
a=3.5575D-350

晕啊

哪位能给点解释?3q

回复列表 (共4个回复)

沙发

楼主,要看看书上的基础知识. 单精度占的内存大小跟双精度的不同. 不理会变量类型直接调用那当然容易错.
调用函数还是要写函数接口interface或者用module.

板凳

多数编译器默认的real类型即为real(kind=4),即该数据占用4字节的内存。
如果实参使用的是real(kind=8)编译器会自动读取8字节内存中的数据给这个变量,后面的4个字节不可预知的,因此子函数中的数据与调用得到的数据不一致是必然的。
所以调用子函数时一定要注意数据类型的一致,可以在编译器中打开这项检查。

3 楼


多数编译器默认的real类型即为real(kind=4),即该数据占用4字节的内存。
如果实参使用的是real(kind=8)编译器会自动读取8字节内存中的数据给这个变量,后面的4个字节不可预知的,因此子函数中的数据与调用得到的数据不一致是必然的。

















SIGNATURE:----------------------------------------------------
Follow love and it will flee, flee love and it will follow thee.
[url=http://www.outletfrees.com/men-nike-free-run-2-c-35.html]nike free run 2[/url]   ,    [url=http://www.outletfrees.com/air-max-2012-men-c-49.html]air max 2012[/url]   ,    [url=http://www.outletfrees.com/nike-lunar-eclipse-2-men-c-65.html]nike lunareclipse 2[/url]

4 楼

2楼没有说错.楼主认真思考一下这个问题吧.

我来回复

您尚未登录,请登录后再回复。点此登录或注册