Fortran 文字常数

示例

程序单元通常使用文字常量。这些涵盖了明显的情况,例如

print *, "Hello", 1, 1.0

除一种情况外,每个文字常量都是一个标量,具有类型,类型参数和语法给出的值。

整数文字常量的形式为

1
-1
-1_1   ! For valid kind parameter 1
1_ik   ! For the named constant ik being a valid kind paramter

实数常量的形式为

1.0    ! Default real
1e0    ! Default real using exponent format
1._1   ! Real with kind parameter 1 (if valid)
1.0_sp ! Real with kind paramter named constant sp
1d0    ! Double precision real using exponent format
1e0_dp ! Real with kind named constant dp using exponent format

复数文字常量的形式为

(1, 1.)       ! Complex with integer and real components, literal constants
(real, imag)  ! Complex with named constants as components

如果实部和虚部都是整数,则复数文字常量为默认复数,并且整数分量将转换为默认实数。如果一个成分是实数,则复数文字常量的kind参数是实数的参数(并且整数成分转换为该实数)。如果两个分量都是实数,则复数文字常量就是最高精度的实数。

逻辑文字常量为

.TRUE.     ! Default kind, with true value
.FALSE.    ! Default kind, with false value
.TRUE._1   ! Of kind 1 (if valid), with true value
.TRUE._lk  ! Of kind named constant lk (if valid), with true value

字符文字值在概念上略有不同,因为种类说明符在值之前

"Hello"       ! Character value of default kind
'Hello'       ! Character value of default kind
ck_"Hello"    ! Character value of kind ck
"'Bye"        ! Default kind character with a '
'''Bye'       ! Default kind character with a '
""            ! A zero-length character of default kind

如上所述,字符文字常量必须用撇号或引号引起来,并且开始标记和结束标记必须匹配。可以通过在引号定界符之内或以双倍出现来包含文字撇号。引号也一样。

BOZ常量与上述常量不同,因为它们仅指定一个值:它们没有类型或类型参数。BOZ常数是位模式,并指定为

B'00000'    ! A binary bit pattern
B"01010001" ! A binary bit pattern
O'012517'   ! An octal bit pattern
O"1267671"  ! An octal bit pattern
Z'0A4F'     ! A hexadecimal bit pattern
Z"FFFFFF"   ! A hexadecimal bit pattern

BOZ文字常量在可能出现的地方受到限制:作为data语句中的常量和内部过程的选择。