在Fortran源代码中,所有关键字、标识符的大小写都不敏感;只有字符字面量里的大小写会作为数据本身被保留。
本文代码
! Fortran的保留关键字大小写不敏感。
! 例如 program、PROGRAM、PrOgRaM对编译器来说是相同的。
program caseInsensitiveDemo
implicit none
! 也可写作ImPlIcIt NoNe ,我暂不做这种不健康示范。
integer :: Score
character(len=*), parameter :: lowerText = "fortran"
character(len=*), parameter :: upperText = "FORTRAN"
! Fortran 的标识符对大小写不敏感。
! 下面先给Score赋值,之后用score和SCORE读取同一个变量。
Score = 90
print *, "Score =", Score
print *, "score =", score
print *, "SCORE =", SCORE
! 字符串字面量的内容不会被编译器改大小写。lowerText和upperText输出的文本内容不同。
print *, "lowerText =", lowerText
print *, "upperText =", upperText
print *, "lowerText == upperText ?", lowerText == upperText !
end program caseInsensitiveDemo
编译与运行
(base) hong@hongdeMacBook-Pro 003.case-insensitive % gfortran practiceCaseInsensitive.f90
(base) hong@hongdeMacBook-Pro 003.case-insensitive % ./a.out
Score = 90
score = 90
SCORE = 90
lowerText =fortran
upperText =FORTRAN
lowerText == upperText ? F
(base) hong@hongdeMacBook-Pro 003.case-insensitive %
运行分析
- Score、score、SCORE是同一个变量,print输出理所当然一致。
- lowerText == upperText 使用相等关系运算符 ==,来判断变量lowerText与upperText的值是否相等。代码中lowerText的值是”fortran”,upperText的值是”FORTRAN”。虽然Fortran源码中的标识符大小写不敏感,但字符字面量中的内容会保留大小写,因此这两个字符串的值不相等,表达式结果为.false。