INTEGER

用途

INTEGER 类型声明语句指定类型为整数的对象和函数的长度和属性。 可以为对象赋予初始值。

语法

读取语法图跳过可视语法图INTEGERkind_selector ::,attr_spec_list:: entity_decl_list

其中:

attr_spec
是下列其中一个:
ALLOCATABLE 1 INTRINSIC PUBLIC
ASYNCHRONOUS OPTIONAL SAVE
AUTOMATIC 2 PARAMETER STATIC 2
BIND 1 POINTER TARGET
DIMENSION (array_spec) PRIVATE VALUE 1
EXTERNAL PROTECTED 1 VOLATILE
INTENT (intent_spec)    
注意:
  • 1 Fortran 2003
  • 2 IBM 扩展
kind_selector
读取语法图跳过可视语法图(KIND = int_constant_expr) * int_literal_constant1
备注信息:
  • 1 IBM 扩展
 
指定整数实体的长度: 1 , 2 , 4 或 8。 int_literal_constant 无法指定类型参数。
attr_spec
有关特定属性规则的详细信息,请参阅同一名称的语句。
intent_spec
INOUTINOUT
::
是双冒号分隔符。 指定属性时使用双冒号分隔符, = constant_expr=> NULL()
array_spec
是维度边界的列表
entity_decl
读取语法图跳过可视语法图a  * 1len2(数组规范)(数组规范) * 3len4 /initial_value_list/5 = constant_expr => NULL()
备注信息:
  • 1 IBM 扩展
  • 2 IBM 扩展
  • 3 IBM 扩展
  • 4 IBM 扩展
  • 5 IBM 扩展
 
a
是对象名或函数名。 不能为具有隐式接口的函数名指定 array_spec
len
覆盖 kind_flector 中指定的长度,不能指定 kind 类型参数。 实体长度必须是整数字面值常量,表示允许长度规范之一量。
initial_value
为紧邻的前一个名称所指定的实体提供初始值。
constant_expr
为紧邻的前一个名称所指定的实体提供常量表达式
=> NULL()
为指针对象提供初始值

规则

在派生类型定义的上下文中:
  • 如果 => 出现在组件初始化中,那么 POINTER 属性必须出现在 attr_spec_list中。
  • 如果 = 出现在组件初始化中,那么 POINTER 属性无法出现在组件 attr_spec_list中。
  • 编译器将在类型定义的作用域单元内对 constant_expr 求值。

如果变量出现 => ,那么对象必须具有 POINTER 属性。

如果针对变量显示 constant_expr ,那么对象不能具有 POINTER 属性。

类型声明语句中的实体会受到对实体指定的任何属性规则的约束,如对应的属性语句中所详述。

类型声明语句将覆盖正在生效的隐式类型规则。 可以使用类型声明语句来确认固有函数的类型。 在类型声明语句中出现通用或特定固有函数名不会导致该名称丢失其固有属性。

如果对象是哑参数、可分配对象、函数结果、空白公共块中的对象、整数指针,外部名称、固有名称或自动对象,那么无法类型声明语句中初始化此对象。 如果对象具有 AUTOMATIC 属性,那么也无法初始化该对象。 如果对象出现在块数据程序单元 IBM 扩展开始 中的命名公共块中,或者出现在模块或子模块中的命名公共块中,则可以对它进行初始化。 IBM 扩展结束

您可以使用 => NULL()初始化指针。

如果规范表达式出现在接口主体或子程序的规范部分中,那么 array_spec 的规范表达式可以是非常量表达式。 任何使用此非常量表达式且不是哑参数或所指对象的被声明对象都称为自动对象

属性不能在给定类型声明语句中重复,并且在一个作用域单元中,一个实体不能被多次显式赋予同一个属性。

如果语句包含 PARAMETER 属性,那么必须指定 constant_expr 。 如果要声明的实体是变量,并且指定了 constant_exprNULL() ,那么初始定义该变量。

如果要声明的实体是派生类型组件,并且指定了 constant_exprNULL() ,那么派生类型具有缺省初始化。

a 将根据固有赋值规则,通过 constant_expr 确定的值进行定义。 如果实体是数组,那么其形状必须在类型声明语句中指定,或在同一作用域单元中的先前规范语句中指定。 变量或变量子对象最多只能初始化一次。 如果 a 是变量,那么 constant_exprNULL() 的存在意味着 a 是已保存的对象,指定公共块中的对象除外。 对象的初始化可能会影响对象的基本存储类。

entity_decl 中指定的 array_spec 优先于 DIMENSION 属性中的 array_spec

没有 ALLOCATABLE POINTER 属性的数组函数结果必须具有显式形状的数组规范。

如果声明的实体是函数,那么除非它是固有函数,否则不得具有可访问的显式接口。

如果先前定义为常量名称的 TF出现在类型声明语句中,那么它不再是缩写的逻辑常量,而是命名常量的名称。

示例

MODULE INT
  INTEGER, DIMENSION(3) :: A,B,C
  INTEGER :: X=234,Y=678
END MODULE INT

相关信息