【问题标题】:Fortran IF loop [duplicate]Fortran IF 循环 [重复]
【发布时间】:2014-01-07 01:31:35
【问题描述】:

我有一个关于我正在查看的用 Fortran 编写的代码的问题。我很困惑的代码部分写在下面。

DO 40 LL=1,N
DO 40 I=1,N-1,2
IF((LL-I)*(LL-I-1)*(LL-I*2)*(LL-I+N-2)) 22,21,22
NODO=LL-I+1
IF((LL.EQ.1) .AND. (I.EQ.N-1)) NODO=NODO+N

我不明白第一个 IF 语句的条件。看起来数字正在相乘,但该数字没有经过任何检查。然后在 IF 语句之后写入 3 个行号。有谁知道这个 IF 语句在做什么?最后一个 IF 语句是有意义的,因为实际上正在检查一个条件。谢谢。

【问题讨论】:

标签: if-statement fortran


【解决方案1】:

线

IF((LL-I)*(LL-I-1)*(LL-I*2)*(LL-I+N-2)) 22,21,22

是一个 算术 if 语句,它肯定已经过时(deprecated 的 Fortran 标准术语),甚至可能已在最新的语言标准中被删除。如果条件评估为负数程序控制分支到第一个标签的行 (ie 22),如果它评估为 0 到第二个标签 (21),如果到第三个标签 (22) 的正值。如您所见,这三个标签不一定都不同。

【讨论】:

  • 另外,除非标签 21 或 22 在 NODO=LL... 的语句上,否则永远不会到达该语句。
  • 感谢你们俩。 21 在与 NODO 的声明中。
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
  • 2021-10-03
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多