306908677 发表于 2014-11-27 21:59:21

逻辑数组如何赋值

数组构造器好像不能赋值,求大神指点!

fcode 发表于 2014-11-27 23:13:02

logical :: fcode(3) = (/.true.,.false.,.true./)

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

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

306908677 发表于 2014-11-28 00:04:22

fcode 发表于 2014-11-27 23:13
logical :: fcode(3) = (/.true.,.false.,.true./)

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

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

楚香饭 发表于 2014-11-28 08:33:10

二维数组需要用 reshape 进行重塑外形。

logical :: fcode(2,2) = reshape( ((/1,0,1,0/)==1) , (/2,2/) )

306908677 发表于 2014-11-28 15:12:43

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

logical :: fcode(2,2) = reshape( (( ...

嗯嗯,多谢!!我试试

306908677 发表于 2014-11-28 16:32:14

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:18

标准编译器可能会出错。因为你这一行超过了132,续个行就行了。

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

306908677 发表于 2014-11-28 17:37:19

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

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

太感谢各位了! 问题解决了!!

百事可乐 发表于 2014-11-29 10:38:36

逻辑数组如果量大,可以考虑用位存储。一个integer可以存32个逻辑值。
页: [1]
查看完整版本: 逻辑数组如何赋值