下面的C++逻辑运算符到Fortran 90 (.f90)的转换是什么?If (存在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).有人能带我到这里来吗?
发布于 2018-10-09 15:32:25
在目前的情况下,这是不相关的,但通常应该注意,Fortran逻辑运算不是短路的。因此,例如,下面的C++代码
if (a == 0 || 10 / a == 1)
{
...
}不等同于
if (a == 0 .or. 10 / a == 1) then
...
end if在Fortran中。编译器可以决定首先计算第二项,然后...糟了。它应该使用两个嵌套的if编写。
https://stackoverflow.com/questions/52714559
复制相似问题