.eq 之间的差异。和==

Difference between .eq. and ==

我看到 JSP 存在类似的问题,但我没有看到 Fortran 的 Whosebug 问题。

问题是:Fortran中的比较运算符“.eq.”和“==”有什么区别?

请注意,由于我使用多个版本的 Fortran(主要是 77 和 90),我很想知道这是否在各个版本之间发生了变化,或者至少是您的答案所针对的版本。

此外,由于我只能在 google 上找到教程,如果您能在您的回答中引用一些权威的内容就太好了(尽管我不确定在线是否有 Fortran 手册).

说起来,这是我从教程页面中找到的:这个教程页面 http://www.personal.psu.edu/jhm/f90/lectures/10.html seems to indicate there is no difference between them, while this set of slides http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/F90-Control.pdf 似乎表明“==”用于字符串比较,而“.eq.” " 用于复数值。

编辑: 实际上,第二个超链接根本没有提到“.eq.”。无论如何,Alexander Vogt 的回答正是我想要的。

==.EQ. 是相同的。 Fortran 2008 标准,Cl。 7.1.5.5.1 "Interpretation of relational intrinsic operations" 状态:

2 The operators <, <=, >, >=, ==, and /= always have the same interpretations as the operators .LT., .LE., .GT., .GE., .EQ., and .NE., respectively.

在 FORTRAN 77 及更早版本中,only .EQ. exists== 运算符已在 Fortran 90 中引入(Cl. 7.2.3 "Relational intrinsic operations",同文)。

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