首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OR逻辑运算符从C++到Fortran的转换

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

Stack Overflow用户
提问于 2018-10-09 14:24:27
回答 1查看 249关注 0票数 3

下面的C++逻辑运算符到Fortran 90 (.f90)的转换是什么?If (存在vx或存在vy )。这里,vxvy是速度的组件

代码语言:javascript
复制
if(vx || vy){
vT=sqrt(vx*vx + vy*vy);
}

我已经尝试过了

代码语言:javascript
复制
if(vx .or. vy) then
vT = sqrt(vx*vx + vy*vy)
end if

但是我得到了一个错误:

代码语言:javascript
复制
operands of logical operator `.or.` at (1) are REAL(8)/REAL(8).

有人能带我到这里来吗?

EN

回答 1

Stack Overflow用户

发布于 2018-10-09 15:32:25

在目前的情况下,这是不相关的,但通常应该注意,Fortran逻辑运算不是短路的。因此,例如,下面的C++代码

代码语言:javascript
复制
if (a == 0 || 10 / a == 1)
{
   ...
}

不等同于

代码语言:javascript
复制
if (a == 0 .or. 10 / a == 1) then
    ...
end if

在Fortran中。编译器可以决定首先计算第二项,然后...糟了。它应该使用两个嵌套的if编写。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52714559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档