Fortran Coder

标题: 逻辑数组如何赋值 [打印本页]

作者: 306908677    时间: 2014-11-27 21:59
标题: 逻辑数组如何赋值
数组构造器好像不能赋值,求大神指点!

作者: fcode    时间: 2014-11-27 23:13
logical :: fcode(3) = (/.true.,.false.,.true./)

如果你觉得不好看,或者 .true. 和 .false. 写起来麻烦,还可以这样写

logical :: fcode(4) = ((/1,0,1,0/)==1) !// 我喜欢这样写


作者: 306908677    时间: 2014-11-28 00:04
fcode 发表于 2014-11-27 23:13
logical :: fcode(3) = (/.true.,.false.,.true./)

如果你觉得不好看,或者 .true. 和 .false. 写起来麻烦 ...

太感谢啦~不过二维数组怎么不行啊-_-#

image.jpg (81.52 KB, 下载次数: 348)

image.jpg

作者: 楚香饭    时间: 2014-11-28 08:33
二维数组需要用 reshape 进行重塑外形。

[Fortran] 纯文本查看 复制代码
logical :: fcode(2,2) = reshape( ((/1,0,1,0/)==1) , (/2,2/) )

作者: 306908677    时间: 2014-11-28 15:12
楚香饭 发表于 2014-11-28 08:33
二维数组需要用 reshape 进行重塑外形。

[mw_shl_code=fortran,true]logical :: fcode(2,2) = reshape( (( ...

嗯嗯,多谢!!我试试
作者: 306908677    时间: 2014-11-28 16:32
306908677 发表于 2014-11-28 15:12
嗯嗯,多谢!!我试试


1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1/)
                                                                           1
错误: (1)处表达式中需要右括号
/Volumes/JARVISR/sae/seaq.f90:7.3:
写法
logical :: lg(7,7) = reshape( ((/0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1/)==1) , (/7,7/) )


作者: fcode    时间: 2014-11-28 17:00
标准编译器可能会出错。因为你这一行超过了132,续个行就行了。

某些编译器允许超过132行,例如ivf
作者: 306908677    时间: 2014-11-28 17:37
fcode 发表于 2014-11-28 17:00
标准编译器可能会出错。因为你这一行超过了132,续个行就行了。

某些编译器允许超过132行,例如ivf ...

太感谢各位了! 问题解决了!!
作者: 百事可乐    时间: 2014-11-29 10:38
逻辑数组如果量大,可以考虑用位存储。一个integer可以存32个逻辑值。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2