Zhang_kg 发表于 2023-4-27 10:02:34

变量当成数组访问,不清楚是什么用法

REAL::                                                      &
            cpmcal, xlcal, diffus,                              &
            viscos, xka, venfac, conden, diffac,                  &
            x

可以看到这里 cpmcal 和 x 都是浮点类型的变量,但是后续代码中出现

cpmcal(x) = cpd*(1.-max(x,qmin))+max(x,qmin)*cpv

这里 cpmcal(x) 表示将 cpmcal 当成数组来访问,并且 x 作为下标吗?

我尝试在工程中查找cpmcal,发现有如下宏定义:

#define CPMCAL(x) (cpd*(1.-max(x,qmin))+max(x,qmin)*cpv)

但是感觉也不能很好解释为什么宏定义接受一个赋值。

我是Fortran语言的新手,Google也没有找到非常合适的回答。如果还需要更多细节,请随时和我联系

li913 发表于 2023-4-27 10:38:57

老代码可能把数据类型和数组属性分开定义
program Test
implicit none
real a
dimension a(3)
a =
print*,a
end program

Zhang_kg 发表于 2023-4-27 10:52:00

本帖最后由 Zhang_kg 于 2023-4-27 10:54 编辑

li913 发表于 2023-4-27 10:38
老代码可能把数据类型和数组属性分开定义
program Test
implicit none
https://s1.ax1x.com/2023/04/27/p9MoIL4.jpg
https://imgse.com/i/p9MoIL4
我感觉可能不是这个问题,因为定义和使用中间似乎没有定义数组的属性

li913 发表于 2023-4-27 17:14:46

那得看完整代码才能知道准确情况。

Zhang_kg 发表于 2023-4-27 19:15:46

li913 发表于 2023-4-27 17:14
那得看完整代码才能知道准确情况。

但是涉及cpmcal 和 x似乎只有这两个地方,还有一个是

#define CPMCAL(x) (cpd*(1.-max(x,qmin))+max(x,qmin)*cpv)

还有可能是什么情况嘛

Transpose 发表于 2023-4-27 19:32:06

这是一个古老古老的语法叫做 语句函数,就是用一句话定义一个只在当前作用域生效的函数


Zhang_kg 发表于 2023-4-27 19:58:41

Transpose 发表于 2023-4-27 19:32
这是一个古老古老的语法叫做 语句函数,就是用一句话定义一个只在当前作用域生效的函数




哇,感觉可能是这个语法
页: [1]
查看完整版本: 变量当成数组访问,不清楚是什么用法