我看到JSP存在类似的问题,但我没有看到Fortran的StackOverflow问题。
问题是:Fortran中的比较运算符“.eq.
”和“==
”之间有什么区别?
请注意,由于我使用Fortran的多个版本(主要是77和90),我有兴趣知道这些版本是否已经更改了版本,或者至少知道您的答案是什么版本。
另外,由于我只能在google上找到教程,如果你能在答案中引用一些权威的话会很好(虽然我不确定在线是否存在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的答案正是我所寻找的。 p>
答案 0 :(得分:8)
==
和.EQ.
完全相同。 Fortran 2008标准,Cl。 7.1.5.5.1"关系内在操作的解释"陈述:
2运算符<,< =,>,> =,==和/ =始终具有相同的 解释为运算符.LT。,。LE。,。GT。,。GE。,。EQ。和 .NE。分别。
在FORTRAN 77及更早版本中,only .EQ.
exists。 Fortran 90引入了==
运算符(Cl.7.2.3"关系内在运算",相同文本)。
对于问题的第二部分,Fortran 2008标准(表7.2:操作数类型和内部运算符的结果)列出了适用的操作数类型。在该表中,您可以看到允许您以任意组合比较整数,实数和复数,但字符串只有tom字符串。结果将始终为.true.
或.false.
。 ==
和.EQ.
之间没有歧视。