将复杂的条件从 C 转换为 Fortran

西萨拉卡

我有一个小的 C 函数来转换 Fortran

baralign(n, b)  {   

  return ((n&~(~0<<b)) ? (n&(~0<<b))+(1<<b):(n))

}

我在上面的语句中写了条件如下在 Fortran

if (IAND(n,NOT(ISHFT(NOT(0),b))))

我不确定这种情况。当我运行此代码时,它会出错说

IF clause requires a scalar LOGICAL expression.
弗拉基米尔·F

该问题与Fortran if statement 中的 Implicit conversion integer <--> logical问题有关,但是该问题略有不同,因为那里的提问者了解问题的性质。

您不能像在 C 中那样将整数表达式放入 Fortran 中的 if 条件中

integer :: n, b

if (IAND(n,NOT(ISHFT(NOT(0),b))))

不可能。条件必须是logical表达式。

如果整数表达式的任何非零值都应该是真的,那么你必须在那里放一个整数比较

if (IAND(n,NOT(ISHFT(NOT(0),b))) /= 0) then

如果您要求表达式恰好为 1,则可以== 1改用。

其余的可能是

  baralign = IAND(n,ISHFT(NOT(0),b)) + ISHFT(1, b)
else
  baralign = n
end if

但我不知道代码的目的,所以我不能确定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 FORTRAN 函数转换为 C#

来自分类Dev

将fortran-iso-c-binding实数转换为real

来自分类Dev

将Fortran转换为Javascript

来自分类Dev

将数据从fortran转换为python

来自分类Dev

将Fortran数组转换为numpy数组

来自分类Dev

Rainflow算法-将Fortran转换为Matlab

来自分类Dev

将fortran代码转换为Matlab

来自分类Dev

将Fortran 77转换为Fortran 95

来自分类Dev

将C中的IF条件转换为MIPS

来自分类Dev

将复杂的json转换为c#类

来自分类Dev

将JSON转换为C#复杂对象

来自分类Dev

将C#的复杂类型转换为YAML

来自分类Dev

将复杂的嵌套 JSON 数组转换为 DataTable - C#

来自分类Dev

Fortran将字符串转换为数字

来自分类Dev

Fortran:将字符数组转换为整数/实数

来自分类Dev

Fortran:将双精度复数转换为单精度

来自分类Dev

Fortran将字符串转换为数字

来自分类Dev

将C转换为MIPS

来自分类Dev

将PowerPC转换为C

来自分类Dev

将嵌套的条件If语句转换为复杂的NSCompoundPredicate

来自分类Dev

将C#soap客户端转换为PHP(转换复杂类型的问题)

来自分类Dev

F2PY。传递数组。“无法将mga.init的第二个参数'xmin'转换为C / Fortran数组”

来自分类Dev

如何将条件约束转换为Cplex的Concert C ++?

来自分类Dev

从C ++将代码转换为C

来自分类Dev

将C联合转换为C ++联合

来自分类Dev

将C ++类型转换为C#

来自分类Dev

在LINQ c#中将OR转换为And条件

来自分类Dev

将复杂的结构/不透明指针/函数从 C++ 头文件转换为 Delphi

来自分类Dev

将fortran转换为python:等价命令,用于从文本文件生成矩阵