fortran - 字符声明表
问题描述
下面的字符声明是什么意思
character :: c*4
它对字符有特殊意义还是适用于所有数据类型?
4是否与中的长度参数相同
character(len=4) :: c
解决方案
有几种方法可以在类型声明语句中声明字符实体的长度,但这些方法的解释分布在其他几个问题和答案中,所以让我们在这里收集它们。问题的形式具有相同的效果。
字符声明语句可以使用以下形式在类型说明符中指定长度len=
:
character(len=4) :: ... ! Literal constant length
character(len=n) :: ... ! Named constant/variable length
character(len=*) :: ... ! Assumed/implied length
character(len=:) :: ... ! Deferred length
或使用以下*
形式:
character*4 :: ... ! Literal constant length
character*(4) :: ... ! Another literal constant length
character*(n) :: ... ! Named constant/variable length
character*(*) :: ... ! Assumed/implied length
character*(:) :: ... ! Deferred length
对于文字常量的情况,括号是可选的并且不是必需的,但对于其他情况是必需的。
或者,*
可以在实体声明本身中使用该表单:
character :: a*4, b*(n), c*(*), d*(:)
character(len=2) :: x*4 ! The *4 overrides the len=2
在所有情况下,1
如果未指定值,则为默认长度。
如果要以这种方式指定长度和数组形状:
character :: a(5,5)*4
character(len=2), dimension(2) :: b(5,5)*4 ! Shape and length overridden.
使用的规范形式*
对于字符长度是唯一的(对于函数和变量)。即使是具有长度类型参数的非字符对象也不能使用这种语法。但是,正如 Vladimir F 所指出的,存在类似的非标准形式,例如integer*4
.
最后,name*(len)
表单是特定于类型声明语句的。例如,它不能在分配中使用:
character(:), allocatable :: c
allocate(character :: c*4) ! Not allowed as length specification, use instead
allocate(character(len=4) :: c) ! or
allocate(character*4 :: c) ! etc
推荐阅读
- angular - 从 jquery summernote 调用父组件函数
- android - 如何在android中的MaterialRadioButton上设置文本(对齐优先),然后是单选按钮
- ubuntu - 我试图杀死特定进程ID上的golang脚本但是当我杀死它时它说终止但仍在运行
- python - 用于简单数组更新的 Jax vmap
- go - Golang 包接口
- blockchain - 有人用过 Hedera Hashgraph 吗?交易真的快到100~10000/s吗?
- .htaccess - 防止域及其所有子域对 .htaccess 进行热链接
- java - Mybatis 1:N 映射
用法 - c++ - 在.h文件中找不到VScode“iostream”文件,而在.cpp文件中没问题
- typescript - 使 TypeScript 返回类型取决于是否存在可选属性