首页 > 解决方案 > OR 逻辑运算符从 C++ 到 Fortran 的转换

问题描述

将以下 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++if-statementfortranlogical-operatorsor-operator

解决方案


C++ 版本隐式比较vxvy与零。

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

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

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

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


推荐阅读