分类: C/C++
2012-03-26 13:15:44
类型声明语句的格式为:类型说明[(种别说明)][,属性说明表] :: 变量名表[=初值],方括号中的可以被省略,所以最简形式为类型说明:: 变量名表
类型说明有五种:integer, real, complex, character, logical
种别说明表示变量所占用的字节数。
integer(kind=8)表示8字节的整型。kind可以省略,写成integer(8)。其它类型也可以用相同的方式指定种别。整型种别可以是
1、2、4、8,实型种别可以是4、8、16,复型种别可以是8、16、32,逻辑型种别可以是1、2、4,字符型种别只能是1。
在类型后加上“*”号与数字也可以表示变量的字节数,比如integer*8等同于integer(8)。值得注意的是complex*32等同于complex(16),因为复数包含两个部分。character*8表示长度为8的字符串,虽然字符型类别只能是1。
F90中关于种别选择的内部函数有:
KIND(X):函数KIND用于查询变量的种别,它返回X的种别值,当X取值为0时,返回标准种别值即缺省值。如:KIND(0)返回值是整型的标准种别值,KIND(0.)、KIND(.FALSE.)、 KIND(“A”)分别返回实型、逻辑型、字符型的标准种别值。
SELECTED_REAL_KIND([n][,m]):该函数返回实型变量对所取的值范围和精度恰当的种别值。其中n是指明十进制有效位的位数,m指明值范围内以10为底的幂次。例如: SELECTED_REAL_KIND(6,70)的返回值为8,表示一个能表达6位精度、值范围在-1070—+1070之间实型数的种别值为8。但该机型上不能提供满足要求的种别值时,它的返回值是:-1(当精度位数达不到时),-2(当数值范围达不到时),-3(两者都达不到时)。对给定的实型和复型量X,它的精度和范围可通过内部函数PRECISION(X)和RANGE(X)查出。
属性说明可以是下表的某个或某几个的组合:
属性关键字 |
描述 |
适用范围 |
ALLOCATABLE |
说明动态数组 |
数组 |
AUTOMATIC |
声明变量在堆栈中而不是在内存中 |
变量 |
DIMENSION |
说明数组 |
数组变量 |
EXTERNAL |
声明外部函数的名称 |
过程 |
INTENT |
说明过程哑元的用意 |
过程哑元 |
INTRINSIC |
声明一个内部函数 |
过程 |
OPTIONAL |
允许过程被调用时省略哑元 |
过程哑元 |
PARAMETER |
声明常量 |
常量 |
POINTER |
声明数据对象为指针 |
变量 |
PRIVATE |
限制模块中的实体访问于本块内 |
常量、变量或模块 |
PUBLIC |
允许模块中的实体被外部使用 |
常量、变量或模块 |
SAVE |
保存过程执行后其中的变量值 |
变量或公共块 |
STATIC |
说明变量为静态存储 |
变量 |
TARGET |
声明变量为目标 |
变量 |
VOLATILE |
声明对象为完全不可预测并在编译时无优化 |
数据对象或公共块 |
初值可以在声明语句中赋值,也可以用data语句(F77)。data语句的形式为:
DATA 变量名表1/初值表1/[[,]变量名表2/初值表2/…]
比如data i/3会给i赋个初值3。data i,f /4,3.5/ 分别给i和赋值。如果变量已经被赋过值了,那么data语句不会再改变这个变量的值。data语句还可以给数组赋初值(后面介绍)。