将以下 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
的无条件赋值替换(如果 vT
和 vx
都为零,则将 vy
设置为零)。1 我希望我做对了;很多年没有用 Fortran 编程了。
关于c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52714559/