【问题标题】:Use of arithmetic if in fortran 77如果在 fortran 77 中使用算术
【发布时间】:2020-01-28 13:57:40
【问题描述】:

我对 f77 中的算术有疑问。如果我正确理解它,它应该是这样使用的:

if(integer) st-,st0,st+

表示如果整数 0,则执行st+。

我有这样一个案例:

 IF(number) test=0

如果数字小于 0,我假设 test=0 语句是正确的?

谢谢

【问题讨论】:

  • 一个算术IF总是有三个分支;这是一个简单的逻辑IF。如果这真的是number 而不是逻辑变量,那么(非标准)语义应该是它测试number 是否不是0(相当于.false.),即if (number .ne. 0)
  • @JeroenMostert 好的,谢谢,是的,它是一个数字,一个整数,我的编译器不喜欢它:-)
  • 在算术中,如果st- 之类的事情没有“完成”:它们是分支的标签。如果test=0 是一个操作语句(已完成)。

标签: fortran fortran77


【解决方案1】:

您的示例代码是一个普通的逻辑 if,但使用整数而不是条件的逻辑表达式。一些编译器(英特尔和前身——DEC、康柏)确实允许将其作为非标准扩展,而 gfortran 不允许。据我所知,甚至没有像-fdec 这样的选项。

请参阅Implicit conversion integer <--> logical in Fortran if statement 了解更多信息。

算术 if 的作用是它使用数字语句标签选择三个分支之一,您不能将可执行语句放在算术 if 之后。

if(integer) label-,label0,label+

这意味着,例如,

if (i) 10, 20, 30

10 do something

20 do something else

30 do something else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2014-11-05
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多