Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

4.2.1 布尔类型

f95 支持布尔类型的常量和表达式。 但是,没有布尔变量或数组,也没有布尔类型语句。

4.2.1.1 控制布尔类型的各种规则

  • 对于屏蔽操作,按位逻辑表达式具有布尔结果;它的每个位都是对相应操作数位进行一个或多个逻辑运算的结果。

  • 用于二进制算术运算符和关系运算符:

    • 如果一个操作数是布尔型,则在执行运算时不进行转换。

    • 如果两个操作数均是布尔型,则在执行运算时就当它们是整数一样。

  • 用户指定的函数均不能生成布尔结果,但某些(非标准的)内部函数可以。

  • 布尔和逻辑类型具有以下差异:

    • 变量、数组和函数可以是逻辑类型,但它们不能是布尔类型。

    • 可以使用 LOGICAL 语句,但不能使用 BOOLEAN 语句。

    • 逻辑变量、常量或表达式仅可以表示两个值:.TRUE..FALSE.。布尔型变量、常量或表达式可以表示任何二进制值。

    • 逻辑型实体在算术表达式、关系表达式或按位逻辑表达式中无效。布尔型实体在所有 3 种表达式中都有效。

4.2.1.2 布尔常量的替代格式

f95 允许使用以下替代格式(没有二进制)的布尔常量(八进制、十六进制或霍尔瑞斯)。 不能将变量声明为布尔型。标准 Fortran 不允许使用这些格式。

八进制

ddddddB,其中 d 是任意八进制数字

  • 可以使用字母 Bb

  • 可以是 1 至 11 个八进制数字(0 至 7)。

  • 11 个八进制数字表示完整的 32 位字,最左侧的数字可以是 0、1、2 或 3。

  • 每个八进制数字指定 3 位的值。

  • 最后一个(最右侧的)数字指定最右侧 3 位(位 29、30 和 31)的内容。

  • 如果位数不足 11 个,则该值右对齐,即它表示字最右侧的位:位 n 至 31。其他位为 0。

  • 忽略空格。

在 I/O 格式规范中,字母 B 表示二进制数字;而在其他地方则表示八进制数字。

十六进制

X’dddX"ddd",其中 d 是任意十六进制数字

  • 可以包含 1 至 8 个十六进制数字(0 至 9,A-F)。

  • 任何字母既可以是大写也可以是小写 (X, x, A-F, a-f)。

  • 数字必须用撇号或引号括起来。

  • 忽略空格。

  • 十六进制数字可以以 + 或 - 符号开头。

  • 8 个十六进制数字表示一个完整的 32 位字,等效的二进制数字对应于 32 位字中每个位的内容。

  • 如果位数不足 8 个,则该值右对齐,即它表示字最右侧的位:位 n 至 31。其他位为 0。

霍尔瑞斯

接受的霍尔瑞斯数据格式为:

nH
’H
""H
nL
’L
""L
nR
’R
""R

上面的 "…" 是字符串,n 是字符数。

  • 霍尔瑞斯常量是布尔类型。

  • 如果任何字符常量是按位逻辑表达式,则该表达式的计算结果为霍尔瑞斯型。

  • 霍尔瑞斯常量可以包含 1 至 4 个字符。

示例: 八进制和十六进制常量。

布尔常量
32 位字的内部八进制数
0B
00000000000
77740B
00000077740
X"ABE"
00000005276
X"-340"
37777776300
X’1 2 3’
00000000443
X’FFFFFFFFFFFFFFFF’
37777777777

示例: 赋值语句中的八进制和十六进制数。

i = 1357B
j = X"28FF"
k = X’-5A’

在算术表达式中使用八进制或十六进制常量可产生未定义的结果,并且不会生成语法错误。

4.2.1.3 布尔常量的替代上下文

f95 允许在非 DATA 语句中使用 BOZ 常量。

Bbbb
Oooo
Zzzz
B"bbb"
O"ooo"
Z"zzz"

如果将它们赋值给实数变量,则不进行类型转换。

标准 Fortran 只允许在 DATA 语句中使用它们。