".eq."和"=="之间的区别是什么?"

9
我看到 JSP 有一个类似的问题,但是我没有在 StackOverflow 上找到 Fortran 的问题。
问题是:在Fortran中,“.eq.”和“==”比较运算符之间有什么区别?
请注意,由于我使用多个版本的Fortran(主要是77和90),如果这在不同版本中有所改变,或者至少知道您的答案是关于哪个版本的。
此外,由于我只能在谷歌上找到教程,所以如果您的答案可以引用权威资料就更好了(尽管我不确定是否存在在线Fortran手册)。
说到这个,我从教程页面上找到了这些内容:这个教程页面http://www.personal.psu.edu/jhm/f90/lectures/10.html似乎表明它们之间没有区别,而这组幻灯片http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/F90-Control.pdf似乎表明"=="用于字符串比较,而".eq."用于复杂值。
编辑: 实际上,第二个超链接根本没有提到" .eq. "。无论如何,Alexander Vogt的答案正是我要找的。

1
这些幻灯片上没有这样的内容。你链接的那些幻灯片根本没有提到 .EQ. - Vladimir F Героям слава
抱歉!你是对的!我想我把.eqv.的提及搞混了。我会相应地编辑我的问题。 - Ryan Farber
请参见http://stackoverflow.com/questions/31306795/to-represent-equalities-and-inequalities-what-is-considered-idiomatic-fortran/31307165#31307165,了解有关风格的简短讨论。 - Ross
1个回答

16

==.EQ. 是相同的。Fortran 2008标准,Cl. 7.1.5.5.1 “解释关系内置操作”的规定如下:

  

2 运算符<、<=、>、>=、==和/=与运算符.LT.、.LE.、.GT.、.GE.、.EQ.和.NE.始终具有相同的解释。

在FORTRAN 77及以前版本中,仅存在.EQ.Fortran 90引入了==运算符(Cl. 7.2.3 “关系内置操作”,同一文本)。

对于您问题的第二部分,Fortran 2008标准(表7.2:内置操作数和结果类型)列出了适用的操作数类型。 在该表中,可以看到您可以以任意组合比较整数、实数和复数,但只能将字符串与字符串进行比较。 结果将始终为.true..false.。 没有区分==.EQ.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接