资源描述:
《fortran90程序设计chapter4》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4.1常量第四章内部数据类型与表控输入输出FORTRAN90预定义五种内部数据类型:整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL),每种类型都具有参数化特性(KIND参数),通过KIND参数可对内部数据类型进行细化,它们是程序中使用最广泛的数据类型。用户可直接使用内部数据类型说明数据对象(常量、变量、数组等)。内部数据类型分为两类:数值型(整型、实型和复型)和非数值型(字符型和逻辑型)。在程序中需要选择和使用符合精度和范围要
2、求的数据类型。FORTRAN90内部数据类型具有参数化特性,通过KIND值参数确定数据最佳的存储开销、精度和范围。表4-1给出内部数据类型的不同KIND值参数及存储开销。表4-1内部数据类型KIND值参数及存储开销类型子类型KIND值字节数说明整型BYTE11与INTEGER(1)等同INTEGER2、4或82、4或8与缺省有关,INTEGER有1、2、4或8个字节。初始缺省为4,缺省值可通过编译选项改变INTEGER(1)11INTEGER(2)22INTEGER(4)44INTEGER(8)8
3、8仅Alpha系统有效实型REAL4或84或8与缺省有关,REAL有4或8个字节。初始缺省为4,缺省值可通过编译选项改变REAL(4)44DOUBLEPRECISION88与REAL(8)等同REAL(8)88复型COMPLEX4或88或16与缺省有关,COMPLEX有8或16个字节。初始缺省为8,缺省与实型缺省值有关(2倍)COMPLEX(4)48DOUBLECOMPLEX816与COMPLEX(8)等同COMPLEX(8)816字符型CHARACTER11CHARACTER与CHARACTER
4、(1)等同。1是KIND值,不是字符串长度CHARACTER*len1lenlen是字符串长度。对IntelCPU有1≤len≤65535,对AlphaCPU有1≤len≤231-1逻辑型LOGICAL2、4或82、4或8与缺省有关,LOGICAL有2、4或8个字节。初始缺省为4LOGICAL(1)11LOGICAL(2)22LOGICAL(4)44LOGICAL(8)88仅Alpha系统有效1134.1常量4.1常量常量是直接写在程序中且在程序运行期间保持不变的数据,它在程序中直接生成并直接用于
5、计算和处理,如125、12.5、(12.5,25.5)、“China”、.TRUE.等。FORTRAN90有五种内部数据类型常量:整型常量、实型常量、复型常量、字符型常量和逻辑型常量。前三种常量称为算术型常量,又称为常数,可进行算术运算,第四种常量称为字符串,可进行相应的字符串处理,第五种常量称为逻辑值,只能进行逻辑运算,FORTRAN90允许逻辑值在特殊情况下参与整型数据运算。4.1.1整型常量整型常量是具有整型数据类型的常量,又称整型常数,简称整数。1.语法描述<整数>→[<符号>][[<基数
6、>]#]<数字>{<数字>}[_<整型KIND值>]说明:①整数可前置+、-号,具有+、-号的整数为有符号整数,否则为无符号整数,无符号整数视为正整数。②通过指定基数可表示2至36进位制整数,常用进制有:2、8、10和16进制,通过指定有关基数和“#”号来指定进位制,缺省为十进制,只有“#”号为16进制。③构成整数的数字至少一个,数字中的字母不区分大小写,且字母A、B、…、Z分别表示10、11、…、35。数字最大值与基数有关,最大数字为基数-1,如基数为17,则最大数字为16,即G。④整数0有三种
7、表示:0、+0和-0。⑤整数内部不允许出现非数值字符(如“,”、“;”、空格)。符号后可以有若干空格。⑥整数前导0(第一个非0数值前的0)对整数值的大小没有影响。⑦整型KIND值确定存储开销、范围和最大位数。KIND值只对十进制有效,其它进制不使用KIND值。<符号>→+∣-<基数>→2∣3∣4∣5∣6∣7∣8∣9∣10∣11∣12∣13∣14∣15∣16∣17∣18∣19∣20∣21∣22∣23∣24∣25∣26∣27∣28∣29∣30∣31∣32∣33∣34∣35∣36<数字>→1∣2∣3∣4
8、∣5∣6∣7∣8∣9∣A∣B∣C∣D∣E∣F∣G∣H∣I∣J∣K∣L∣M∣N∣O∣P∣Q∣R∣S∣T∣U∣V∣W∣X∣Y∣Z<整型KIND值>→1∣2∣4∣82.整数基数FORTRAN90允许在程序中表示2至36进位制整数。对于R进制,组成整数的数字最大为R-1,用对应字母表示,如十进制整数3994575可在程序中按下面形式描述(输出结果相同):PRINT*,2#1111001111001111001111!2进制整数PRINT*,7#45644664!7进制整数PRINT*,+8