主题:intel fortran中real和real(kind=8)的区别
xiashuning
[专家分:110] 发布于 2012-04-11 23:05:00
我在子函数中计算得到
a=2.48 (比如),类型为:real
调用的时候给的实参是Real(kind=8),结果就变成了
a=3.5575D-350
晕啊
哪位能给点解释?3q
回复列表 (共4个回复)
沙发
yeg001 [专家分:14390] 发布于 2012-04-11 23:19:00
楼主,要看看书上的基础知识. 单精度占的内存大小跟双精度的不同. 不理会变量类型直接调用那当然容易错.
调用函数还是要写函数接口interface或者用module.
板凳
bshine1225 [专家分:720] 发布于 2012-04-12 10:25:00
多数编译器默认的real类型即为real(kind=4),即该数据占用4字节的内存。
如果实参使用的是real(kind=8)编译器会自动读取8字节内存中的数据给这个变量,后面的4个字节不可预知的,因此子函数中的数据与调用得到的数据不一致是必然的。
所以调用子函数时一定要注意数据类型的一致,可以在编译器中打开这项检查。
3 楼
yoyoyou [专家分:10] 发布于 2012-04-23 16:30:00
多数编译器默认的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 楼
yeg001 [专家分:14390] 发布于 2012-04-23 23:50:00
2楼没有说错.楼主认真思考一下这个问题吧.
我来回复