Fortran中双引号和单引号的区别是什么?

16

我刚开始学Fortran,对于单引号和双引号的使用感到困惑。

4个回答

17

它们是等价的。在使用上没有任何区别。

您可以使用它来打印其中一个引号字符:

print *, "'"

print *, '"'

先打印单引号',再打印双引号"

注意:您也可以连续使用两个引号来打印一个引号:

print *, """"

print *, ''''

先输出"再输出'


0

有一些差异。

write (6,*) " Bruce's beard "

代码运行正常,成功打印出了布鲁斯的胡须。

然而,

write (6,*) '' Bruce's beard ''
write (6,*) ' Bruce's beard '

这不会给你正确的输出,正确的输出应该是布鲁斯的胡须。


一个真正显著的差异,足以明确拒绝的是,如果一个用于字符字符串,另一个用于单个字符。这种差异确实出现在其他一些编程语言中。 - Vladimir F Героям слава

0

从功能上讲,它们没有区别。只需尽量保持一致性。如果您的字符串倾向于使用双引号,则应始终使用单引号;如果您更经常使用单引号,请使用双引号来分隔您的字符串。

此外,可以在字符串内部转义引号字符:(即'You\'re'),但大多数人建议将其加倍使用,因为他们认为这样更易读(即'You''re')。


2
用反斜杠进行转义不符合标准规范。 - Vladimir F Героям слава
这种转义(如果允许)将取决于处理器,并且最好避免使用标准方式。 - francescalus
@francescalus,我没有意识到这一点。谢谢你提醒我。你知道有哪些特定的环境不支持它吗? - everythingfunctional
nagfor和ifort不能开箱即用 - 我不知道它们是否有控制选项来支持此功能。 - francescalus

0

在注释和字符上下文之外,特殊字符"(引号/引用)和'(撇号)有两种用法:

  • 分隔文字常量,包括用作字符字符串编辑描述符的常量
  • 分隔BOZ文字常量

这两种情况的语法规则明确允许使用"'作为分隔符(但要求起始和结束分隔符匹配,因此它们并不完全可互换),在这两种情况下解释之间没有区别。(这与其他一些语言形成对比,其他语言只允许一种形式,或者每种形式可能意味着不同的东西。)

在Fortran 2018中,R724允许将"A"'A'都作为文字字符常量;R766允许在指定八进制常量时同时使用O'1'O"1"。(当然,这些规则不允许使用"A'O"1'。)

在字面字符常量/字符上下文中,如其他答案所示,每个特殊字符都代表其自己的特定形式。同样,请注意其他答案中如何解释'"A''A"'
在注释中,两个字符都没有任何特定的解释。

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