将以下 C++ 逻辑运算符转换为 Fortran 90 (.f90) 会是什么?如果(存在 vx 或存在 vy)。这里 vxvy 是速度的分量

if(vx || vy){
vT=sqrt(vx*vx + vy*vy);
}

我试过跟随
if(vx .or. vy) then
vT = sqrt(vx*vx + vy*vy)
end if

但我收到错误:
operands of logical operator `.or.` at (1) are REAL(8)/REAL(8).

有人可以在这里指导我吗?

最佳答案

C++ 版本隐式地将 vxvy 与零进行比较。

在 Fortran 中,您必须明确地这样做1:

if (vx /= 0 .or. vy /= 0) then

由于 if 语句看起来像是性能优化,因此可能值得质疑是否完全需要它,或者是否可以用对 vT 的无条件赋值替换(如果 vTvx 都为零,则将 vy 设置为零)。

1 我希望我做对了;很多年没有用 Fortran 编程了。

关于c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52714559/

10-10 11:39