关于循环中cycle的一个发现
本帖最后由 蒂姆邓肯 于 2015-12-23 23:19 编辑如题,希望对大家有帮助,以及希望各位前辈能够指点迷津在使用中发现cycle和if(...)的结合有问题,正常的代码如下:program aa
implicit none
integer j(3)
integer i
data j /22,33,44/
do i=1,3
if(j(i).eq.22) cycle
write(*,*)j(i)
enddo
end
这里能正常输出j(i)的值,但是如果将if的写法写成
do i=1,3
if(j(i).eq.22) then
cycle
write(*,*)j(i)
endif
enddo
则什么结果都没有,数组的数据也丢失了
根据彭国伦的书上第73页的描述,if(...) command的写法只能在模块中只含有一个程序命令时使用,由此是否可以推断cycle这个模块有且仅有一个命令,就是cycle本身?
请各位多多指教
第一次,满足 if , cycle 进入下一次循环,不输出。
第二次,不满足 if,不输出。
第三次,不满足 if , 不输出。
改为
do i=1,3
if(j(i).eq.22) then
cycle
endif
write(*,*)j(i)
enddo
就与 之前的一样效果了 cycle 是一个语句,既非模块,也非命令。要把基本概念弄清楚 。
百事可乐 发表于 2015-12-23 23:25
第一次,满足 if , cycle 进入下一次循环,不输出。
第二次,不满足 if,不输出。
第三次,不满足 if , 不 ...
啊!对的!我把write写在if判断里了,所以cycle的时候给忽略了,难怪昨天我跑的时候一直感觉好奇怪的,谢谢你的指教,昨晚脑袋浆糊了,这么简单的逻辑都没搞清,现在理清了:-P
页:
[1]