if(a .feq. 5.0_dp) then **** if(a .fne. 5.2_dp) then ***
我遇到了一些这样的代码。.feq 有什么作用?或.fne。意思?是“=”还是“\=”?
在 Fortran 中,运算符(一元或二元)可以采用这种形式,一串字母(最多 63 个),.两端带有 a 。所以,.feq.和.fne.是运营商。
我们还会看到诸如.not.,.eq.等运算符。
有些操作符,比如刚才提到的两个,是标准的内在操作符,有些可能是非标准的内在操作符,我们甚至可以有用户定义的操作符。
.feq.并且.fne.不是(Fortran 2018)标准内在运算符。它们可能是非标准的内部运算符,但很可能是用户定义的。由于它们不是标准操作符,我们不能说它们是做什么的(尽管作为非常遐想的评论,我们可以做出合理的猜测)。
您将需要阅读项目的文档(或编译器,对于非标准内部运算符的情况),或者您可以查看可用的源代码。
您将如何找到用户定义的运算符的作用?例如.feq.,您应该找到一个具有以下OPERATOR(...)语法的接口块:
interface operator (.feq.)
...
end interface operator (.feq.)
Run Code Online (Sandbox Code Playgroud)
在该接口块中,您会发现提到了一个或多个特定函数,就像使用其他通用函数一样。检查这些函数,直到找到一个具有正确数量的参数(一个用于一元运算符,两个用于二进制)且类型正确的函数(第一个参数匹配.feq.一元之后的参数;或者如果它是二元的,则向左匹配,用第二个参数正确)。然后你就可以看到这个函数做了什么。
您可能还会发现您的 IDE 或其他工具会告诉您操作符是如何解决的。
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |