文章目录

  • 数据类型
  • implicit函数
  • 数据类型转换

上节内容: fortran安装和编译

数据类型

fortran共有5中数据类型

整数 实数 复数 逻辑 字符
integer real complex logical character

kind参数,可以指定变量所占位数,例如integer(kind=4)表示占据4byte的整型,也就是32位整型。

len参数,可以声明字符个数,例如character(len=80)表示长度为80的字符串。

在声明变量时,数据类型和变量名之间用::隔开,正如上节示例程序中的real :: a, b, res

fortran除了变量之外,还有常量,例如logical类型的两个值.true..false.就是两个常量。除此之外,若想创建常量,需要用到parameter命令,例如

real pi
parameter(pi=3.1415926535)

也可以在声明时直接赋值

real, parameter :: pi = 3.1415926535

implicit函数

通过implicit,可以将变量的首字母和数据类型关联起来,例如implicit integer(A-F,I,K),可以指定以A-F或者I, K开头的变量为整型,当然fortran是不分大小写的。

! impliTest.f95
program addNumimplicit complex(A-C)implicit real(D-G)implicit integer(i,j,k)a = 1d = 1i = 1print *, a, d, iend program addNum

编译之后得到结果

>gfortran impliTest.f95
1>a.exe
(1.00000000,0.00000000)   1.00000000     1

fortran对变量首字母是有默认要求的,即不加任何implicit的情况下,变量名以i, j, k, l, m, n开头即为整型,否则位浮点型,此即fortran77的I-N规则。惊闻此讯,那不得赶紧尝鲜一下77年的规则?

但刚刚在试复数时发现了一个问题,尽管复数是fortran的内置类型,但要怎样才能创建一个复数呢?

这就是接下来要说的,数据类型转换。

数据类型转换

首先要解决的问题是创建复数的问题,这个很容易,只需cmplx(x, [y, kind]),可以将xy转换为x+iuy默认为0。

其他的数据类型转换主要涉及到整型和实型,由整数变成实数非常容易,只需考虑转换的位数问题,dble将整数转换为双精度浮点数;real(a [,kind])函数可将a转为kind位的实数。

反之则稍微复杂,由于涉及到舍入问题,故有四种转换函数

函数 说明 函数 说明
int 取a的整数部分 nint 四舍五入
ceiling 向上取整 floor 向下取整

有两个函数也有取整功能,但不改变数据类型,aintanint的功能与int, nint相同,但返回值是实数。

字符虽然看上去和数字没什么关系,但其编码过程仍然需要与数字进行意义对应,fortran中提供了ASCII码的转换函数

  • ACHAR(n) 将ASCII转为字符,n=0,1,⋯,127n=0,1,\cdots,127n=0,1,⋯,127
  • CHAR(n) 将ASCII转为字符,n=0,1,⋯,255n=0,1,\cdots,255n=0,1,⋯,255
  • IACHAR(c) 将字符c转为ASCII,范围是0,1,⋯,1270,1,\cdots,1270,1,⋯,127
  • ICHAR(c) 将字符c转为ASCII,范围是0,1,⋯,2550,1,\cdots,2550,1,⋯,255

指针

fortran中,指针需要用关键字pointer来声明,通过函数allocate来开辟指针的内存,具体示例如下

program ptTest
implicit noneinteger, pointer :: p1allocate(p1)p1 = 1print *, p1p1 = p1 + 4print *, p1end program ptTest

由于指针只有在面对复杂的数据结构时,才会绽放威力,所以这里就不细说了。

fortran教程2:数据类型相关推荐

  1. numeric scale mysql_MySQL基础教程1 — 数据类型之数值类型 - numeric

    ...if (!$dateTimeString) { $dateTimeString = time(); } $numeric = ''; $add_space = false; for($i=0;$ ...

  2. Python学习教程:数据类型—字符串大总结

    Python学习教程:数据类型-字符串大总结 1. Python字符串的创建 字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下: str = "我是字符串 ...

  3. Kotlin教程学习-数据类型

    2019独角兽企业重金招聘Python工程师标准>>> 一切都是对象. 在Kotlin中一切都是对象.Kotlin有一些基本类型Boolean,Byte,Shot,Int,Long, ...

  4. Fortran教程3:函数和子过程

    文章目录 运算符 函数 子过程 递归 前两节: 1 安装和编译: 2 数据类型 运算符 Fortran中运算符分为三类,即算术.关系.逻辑.算术运算符有5个,即+, -, *, /, **,表示加.减 ...

  5. matlab整型和浮点的区别,技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)......

    1.2.1 什么是变量和变量名 变量这个词似乎在许多地方都有出现,在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科),而这个所谓的名字就叫做变量名.举个例子说现在我们再MATLAB的命令窗口 ...

  6. pythontuple数据类型_Python基础教程2d–数据类型-tuple(元组)

    1定义 tuple(元组)也是一种顺序结构的数据类型,定义一个空元组的方法用英文小括号: 变量名=() t = () 定义一个包含了多个元素的元组在小括号中用逗号分隔开各个元素: 源码print('\ ...

  7. 后端返回number类型数据_Javascript基础教程之数据类型 (数值 Number)

    javascript中想限定一个数的数值,无需限定它是整数还是浮点数型 var num1 = 80 ; var num2 = 55.51; var num3 = -34; var num4 = 9e5 ...

  8. C语言基础学习教程之数据类型

    在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式. C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型 ...

  9. fortran教程9:和C语言混合编程

    文章目录 编译dll 调用dll 数据类型对应 在C语言中调用 前情提要: 1 安装和编译

最新文章

  1. leetcode 反转字符串
  2. SAP CRM Product UI是如何判断当前会话发生了数据写操作的
  3. ASP.NET(c#)常用类函数
  4. 信息学奥赛一本通(1008:计算(a+b)/c的值)
  5. python中easygui和tkinter_python easygui Tkinter
  6. GWT HTML editor
  7. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
  8. js使用html5,JS使用H5实现图片预览功能
  9. cocos2d-html5 sprite打印宽高都为0的问题
  10. linux安装酷q机器人,docker一键安装酷Q搭建个人QQ机器人
  11. 一级计算机基础试题答案,计算机一级计算机基础试题及答案
  12. 当“长期主义”遇上“流量生意”,轻松筹与水滴筹谁更胜一筹?
  13. android AMS
  14. mount:special device does not exist (a path prefix is not a directory)
  15. 2208988800一个奇怪的数字
  16. 运行时读取PAK文件
  17. 应届毕业生北京租房经验
  18. 剑指 Offer 05. 替换空格
  19. 解决浏览器弹出 安全警告当前网页正在视图打开您的受信任的站点列表中的站点,您想允许这样做吗?
  20. 学会在Android Studio连接数据库

热门文章

  1. DARTS论文和算法解析
  2. shel脚本-更新hosts
  3. 仿生蛇形机器人03、Dynamixel MX-64AR舵机串联两个修改Demo(例程)进行调节
  4. 新闻管理系统-javaWeb -大作业-更新版(之前的存在问题)
  5. DOOM启世录的启示 1
  6. 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(六)——Github与Markdown相关教程
  7. Adb 授权过程分析
  8. 论C语言与PYTHON的优劣
  9. 合并列值(将一列的多个值合并成一行)
  10. WPAWPA2 deauth攻击实验