Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1746306
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 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)查出。


SELECTED_INT_KIND([m]):该函数返回整型变量对所取的值范围恰当的种别值。m指明值的范围是-10m—+10m

属性说明可以是下表的某个或某几个的组合:

属性关键字

描述

适用范围

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语句还可以给数组赋初值(后面介绍)。



阅读(2256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~