回 帖 发 新 帖 刷新版面

主题:请教大家关于循环赋值

我有下面一段代码,实在是简单,,其中DX=0.05,JC=5.
但是运行后运行后,发现打印出来的是
121  0.40000   0000000E+00
实在是奇怪,我本意是想把h(121,3)也赋值成0.4,请教大家,这是怎么回事呀?
----------------------------------------
Do i=2,(6.0/DX)+1
    h(i,2:JC+1)=0.4
End Do
Print *, i,h(120,3),h(121,3)
----------------------------------------

回复列表 (共1个回复)

沙发

在语法标准里

Do i = M , N , S

循环变量 i,初值M,末值N,步长S,都必须是整数。

你的程序里,末值 (6.0/DX)+1 是个 real 类型。

所以不符合语法规范。这种行为的结果就是不可预料的,或者说依赖编译器的。

编译器针对不符合语法规范的写法,总是结果不一致的。

在我的编译器上,结果是:
         122  0.4000000      0.4000000

为了统一规则,建议你写成
Do i = 2 , int( (6.0/DX)+1. )

我来回复

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