Fortran Coder

查看: 23677|回复: 9
打印 上一主题 下一主题

[讨论] 关于Fortran的赋值

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2014-2-25 11:22:35 | 显示全部楼层
jason 的帖子非常好,不但说明了赋值中的类型精度问题,还说明了 forall 的一些用法。值得好好琢磨一下。

补充一些想法:
1.尽管语法允许赋值的时候variable和expr的类型或精度不同,但我依然建议不要这样。尽量保证两边类型精度一致。
2.如真的需要不一致的类型或精度,最好显式地加上转换函数,例如:
[Fortran] 纯文本查看 复制代码
integer :: i = 1.0
real :: r
r = real(i)


3.常量也有类型和精度,这一点要格外注意。如果代码中有大量的变量或常量需要指定精度,建议不要用 _8 这样的数字后缀。

[Fortran] 纯文本查看 复制代码
Implicit None
Integer , parameter :: I4  = SELECTED_INT_KIND( 8 )
Integer , parameter :: R8 = SELECTED_REAL_KIND( 6 , 70 )
Integer( Kind = I4 ) :: iVar1 , iVar2
Real( Kind = R8 ) :: rrVar1 , rrVar2
Real( Kind = R8 ) :: rrVar3 , rrVar4
rrVar1 = 1.0_R8


4. forall 虽然相当于循环,但不完全一样,除了在并行计算中的优势之外,还可以实现很多常规Do循环比较难处理的计算。但是使用它要格外小心。

jason 输出二维数组的语句很好,简单高效。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 15:16

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表