fortran fortran中文资料网
手气不错
Article

061.lexicalComparison_字符词法比较

2026年10月1日基础级

llt、lle、lgt和lge按ASCII排序序列对默认字符值进行词法比较,分别表示小于、小于等于、大于和大于等于。它们常用于稳定的英文代码、键名和标识符排序;适合ASCII词法规则,不等同于数字大小、自然排序或语言相关的字典排序。

语法结构

result = llt(stringA, stringB)
result = lle(stringA, stringB)
result = lgt(stringA, stringB)
result = lge(stringA, stringB)
  • 比较从左到右逐字符进行,遇到第一对不同字符时由ASCII次序决定结果。
  • 长度不同时,较短字符串按右侧补空格后再比较。
  • 这些函数固定使用ASCII排序;普通字符关系运算符使用处理器排序序列,在非ASCII处理器上可能不同。

本文代码

! 比较字符的ASCII词法次序,并观察补空格规则。
program lexicalComparisonDemo
  implicit none

  print "(A,L1)", 'LLT("run10", "run2"):', llt("run10", "run2")
  print "(A,L1)", 'LGT("beta", "Alpha"):', lgt("beta", "Alpha")
  print "(A,L1)", 'LLE("A", "A "):', lle("A", "A ")
  print "(A,L1)", 'LGE("A", "A "):', lge("A", "A ")
end program lexicalComparisonDemo

编译运行

(base) hong@hongdeMacBook-Pro 061.lexicalComparison % gfortran -Wall -Wextra -std=f2018 exampleLexicalComparison.f90 -o lexicalComparisonDemo
(base) hong@hongdeMacBook-Pro 061.lexicalComparison % ./lexicalComparisonDemo
LLT("run10", "run2"):T
LGT("beta", "Alpha"):T
LLE("A", "A "):T
LGE("A", "A "):T

现象分析

run10与run2的前三个字符相同,第4个字符分别是1和2。ASCII中1排在2之前,所以llt返回T;这不是数值比较,因此不会把10识别为大于2。

beta与Alpha在第1个字符就不同。ASCII中小写b排在大写A之后,所以lgt返回T;函数不会自动忽略大小写。

比较A与A加一个空格时,较短的A按规则补一个空格,两个字符值因而相等,所以lle和lge都返回T。

核心知识点

  • LGE、LGT、LLE和LLT使用ASCII词法次序。
  • 较短字符串按右侧补空格后比较。
  • 词法顺序不等于数值顺序,也不提供自然排序或忽略大小写比较。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注