以下 C++ 逻辑运算符到 Fortran 90 (.f90) 的转换是什么?如果(vx
存在或 vy
存在)。这里 vx
和 vy
是速度的分量
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++ 版本隐式地将 vx
和 vy
与零进行比较。
在 Fortran 中,您必须明确地这样做1:
if (vx /= 0 .or. vy /= 0) then
由于 if
语句看起来像是一种性能优化,因此可能值得质疑是否完全需要它,或者是否可以用对 vT
的无条件赋值来代替(这将设置如果 vx
和 vy
都为零,则 vT
为零。
1 希望我没听错;已经很多年没有用 Fortran 编程了。
关于c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52714559/