c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换

标签 c++ if-statement fortran logical-operators or-operator

以下 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++ 版本隐式地将 vxvy 与零进行比较。

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

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

由于 if 语句看起来像是一种性能优化,因此可能值得质疑是否完全需要它,或者是否可以用对 vT 的无条件赋值来代替(这将设置如果 vxvy 都为零,则 vT 为零。

1 希望我没听错;已经很多年没有用 Fortran 编程了。

关于c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52714559/

相关文章:

fortran - 并行运行代码时出现错误结果

c++ - OpenCV3 手指检测

c++ - 如何在ROS中高效加载大量参数?

shell "if"语句

c++ - 将 unique_ptr 传递给库函数(FORTRAN 函数)

python-2.7 - f2py 与英特尔 Fortran 编译器

c++ - 将 IOCTL 发送到 Windows 设备驱动程序 - CreateFile 失败

c++ - 是否可以分析查看程序集的 C/C++ 内联函数?

Java初学者: Is this best practise (randoms and conditionals)?

javascript - 在 if 语句中排除所有其他事件 ID