24小时热门版块排行榜    

CyRhmU.jpeg
查看: 205  |  回复: 2
当前主题已经存档。

holmescn

金虫 (正式写手)

[交流] 【讨论】Intel ifort 中kind=8的integer不能直接初始化

无聊时写了一个程序,使用了一下64位的integer结果发现一个问题:
编译期的计算不支持64位
或许是因为我没有打开某些编译选项,或许是编译器的问题,总之是一个值得注意的问题。比如我写了一个表达8.5G的整数:
imax=8.5*1024*1024*1024
结果,既不是应有的8.5G的表达,也不是8G的表达,变成一个负数了。
然后我又实验了4G
imax=4×1024×1024×1024
结果变成了0。显然是溢出了。
那应该怎么做呢。应该是使用64位的计算,而不是编译期的计算。
imax=1024*1024*1024
imax=imax*8+imax/2
这样就可以了。

大家有什么想法呢?

PS:8.5G的DVD刻录盘,只有8.1G的空间。还真是不爽啊。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与应助! 2010-02-06 20:58
kind=8的整数应该只是双精度而已吧

64位要你的系统和硬件才行,仅编译器支持是不行的
2楼2010-02-06 10:43:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

引用回帖:
Originally posted by hakekill at 2010-02-06 10:43:23:
kind=8的整数应该只是双精度而已吧

64位要你的系统和硬件才行,仅编译器支持是不行的

我用的是64位Linux。
3楼2010-02-06 13:46:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见