作者:Sur-KID | 来源:互联网 | 2022-12-02 18:02
将以下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).
谁能指导我在这里?
1> NPE..:
C++版本隐含地比较vx
并且vy
为零.
在Fortran中,你必须明确地这样做1:
if (vx /= 0 .or. vy /= 0) then
由于if
语句看起来像一个性能优化,它可能是值得质疑是否它完全需要或可以与无条件转让被替换vT
(这将设置vT
为零如果两个vx
和vy
为零).
1我希望我做对了; 多年没有在Fortran编程.