Oracle® Developer Studio 12.5:Fortran 用户指南

退出打印视图

更新时间: 2016 年 6 月
 
 

4.5 无符号整数

Fortran 编译器接受新的数据类型 UNSIGNED 作为对该语言的一种扩展。UNSIGNED 接受四个 KIND 参数值: 1、2、4 和 8,分别对应于 1、2、4 和 8 字节无符号整数。

无符号整型常量的形式是:数字串后跟大写或小写字母 U,再后跟一个下划线和种类参数(可选)。下面的示例显示了无符号整型常量的最大值:

         255u_1
         65535u_2
         4294967295U_4
         18446744073709551615U_8

如果没有使用种类参数 (12345U),则缺省值与缺省整数相同。缺省值为 U_4,但可以使用 -xtypemap 选项更改它,这会更改缺省无符号整数的种类类型。

可使用 UNSIGNED 类型说明符声明无符号整型变量或数组:

        UNSIGNED U
        UNSIGNED(KIND=2) :: A
        UNSIGNED*8 :: B

4.5.1 算术表达式

  • 二进制运算(如 + - * /)不能混合使用有符号操作数和无符号操作数。即,如果将 U 声明为 UNSIGNED 并且 N 是有符号的 INTEGER,则 U*N 是非法的。

    • 可使用 UNSIGNED 内部函数将二进制运算中的混合操作数组合起来,例如 U*UNSIGNED(N)

    • 有一种例外情况是,如果一个操作数是无符号整数,而另一个操作数是具有正值或零值的有符号整数常量表达式,则结果是无符号整数。

    • 此类混合表达式的结果的类型,是操作数最常见的类型。

    有符号值的幂是有符号的值;而无符号值的幂是无符号的值。

  • 无符号值的一元负值是无符号的值。

  • 无符号操作数可以与实数、复数操作数任意混合使用。(无符号操作数不能与区间操作数混合使用。)

4.5.2 关系表达式

可以使用内部关系运算来比较有符号和无符号整型操作数。其结果基于未修改的操作数的值。

4.5.3 控制构造

  • CASE 构造接受无符号整数作为条件表达式。

  • 不允许将无符号整数作为 DO 循环控制变量,也不允许在算术 IF 控制表达式中使用它。

4.5.4 输入/输出构造

  • 可以使用 I、B、O 和 Z 编辑描述符来读取和写入无符号整数。

  • 还可以使用列表控制和名称列表 I/O 读取和写入无符号整数。无符号整数在列表控制或名称列表 I/O 下的写入格式与用于带符号正整数的格式相同。

  • 也可以使用未格式化 I/O 读取或写入无符号整数。

4.5.5 内部函数

  • 允许在内部函数中使用无符号整数,但 SIGNABS 除外。

  • 新的内部函数 UNSIGNEDINT 类似,但生成无符号类型的结果。格式为

    UNSIGNED(v [,kind] )

  • 另一个新的内部函数 SELECTED_UNSIGNED_KIND( var) 返回 var 的种类参数。

  • 内部函数不允许同时使用有符号整型操作数和无符号整型操作数,但 MAXMIN 函数除外。仅当至少有一个 REAL 类型的操作数时,才允许这两个函数同时使用有符号整型操作数和无符号整型操作数。

  • 无符号数组不能作为数组内部函数的参数。