c++ - OR 逻辑运算符从 C++ 到 Fortran 的转换
问题描述
将以下 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 编程了。
推荐阅读
- grafana - Grafana MySQL 查询以在图上动态分组系列
- floating-point - seaborn scatterplot x/y ticks 数据类型被切换(浮点值到 int,反之亦然)
- docker - 如何提前将图像放入容器(图像)中?
- c++ - CMake为windows编译cpp项目
- sql - UNPIVOT Teradata 中的常数值
- node.js - 无法在节点 js 上运行我的 oracle 程序
- html - Live Share 参与者无法运行任何代码
- xml - 用于遍历 jar 文件列表以添加内容与其各自 jar 文件相对应的文件的脚本
- direct3d12 - 是否可以更新 Direct3D 12 描述符范围或根签名?
- python - Selenium Python Scrape - 无法将抓取的数据循环到 Excel