> 其他 >
Fortran中,实型常量后面带个括号是什么含义.
括号内是个整数.
比如:
real*8 scale
scale(3)=55
2013年12月7日补充:
较为完整的源代码↓
real*8 scale
common /scales/ scale(maxvar)
nvar = 0
do i = 1,n
nvar = nvar + 1
scale(nvar) = 12.0d0 * xbox
nvar = nvar + 1
scale(nvar) = 12.0d0 * ybox
nvar = nvar + 1
scale(nvar) = 12.0d0 * zbox
end do
源代码是这样的,我所不理解的便是循环体了.nvar是整型变量,xbox一类的是实型变量.
代码很简单,有劳了.
人气:366 ℃ 时间:2020-06-14 16:08:55
解答
这样的写法是不正确的.
如果是这样:
real*8 scale
b = scale(3)
这还有可能,scale 是一个函数.b = scale(3) 的意思是调用scale函数,其参数是3,返回值赋给 bscale的定义不是real吗,那应该是实型常量呀,怎么又成为函数了呢?希望您能继续解答。real*8 scale有可能是定义实型变量。(注意不是常量,是变量)也有可能是定义一个外部函数,该函数名字叫 scale,返回值是real*8 类型的。比如real*8 function scale( x )end function你先确定一下 scale(3) 出现在等号左边还是右边??另外,语法里规定了一个叫 scale 的函数,但这个函数是两个参数,而不是一个。你确定是叫 scale,而不是你随便举的例子?我有一点儿编程基础,可以确认scale(3)是在等号左边的。我源代码里括号内只有一个整型变量,如果是函数,也应当是两个参数,您说的没错。只是现在还不理解为何会这么写,不明白这样如何赋值。这是错误的写法。如果您还有疑问,请给出比较完整的代码。您好,由于追问框的字数限制,我将代码补充进问题说明了,谢谢您。real*8 scalecommon /scales/ scale(maxvar)这里说明 scale 是数组,它的大小是 maxvar。common 语句目前不推荐使用了。maxvar 在前面应该定义过,是parameter常量。注意 scale 是数组,而不是单变量。nvar = 0 do i = 1, nnvar = nvar + 1scale(nvar) = 12.0d0 * xboxnvar = nvar + 1scale(nvar) = 12.0d0 * yboxnvar = nvar + 1scale(nvar) = 12.0d0 * zboxend do这个循环的意思就是,让 scale(1) , scale(4) , scale(7) .... 等于 12 * xbox让 scale(2), scale(5) , scale(8) .... 等于 12 * ybox让 scale(3), scale(6) , scale(9) .... 等于 12 * zbox也就是 x y z x y z x y z 这样循环出现。这个写法其实就目前来说就太麻烦了。很简单的句子就可以完成:scale(1::3) = 12.0d0 * xboxscale(2::3) = 12.0d0 * yboxscale(3::3) = 12.0d0 * zbox
推荐
猜你喜欢
© 2024 79432.Com All Rights Reserved.
电脑版|手机版