首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用子例程退出Fortran中的“做边做边做”循环

问使用子例程退出Fortran中的“做边做边做”循环
EN

Stack Overflow用户
提问于 2014-04-10 12:48:53
回答 2查看 970关注 0票数 1

我有一个长的条件语句来决定是否退出我在几个地方使用的do while循环。

代码语言:javascript
复制
if (long_class_name <= something + 0.5 .and. &
    long_class_name >= something - 0.5 .and. &
    long_class_name <= some_other_thing + 0.5 .and. &
    long_class_name >= some_other_thing - 0.5 .and. &
    yet_another_thing == -999.0) exit

是否有方法通过Fortran中的子例程或函数返回exit语句,例如:

代码语言:javascript
复制
call check_for_exit

最好是,而不是必须添加变量等(例如,从函数返回一个逻辑,然后对其执行一个简单的if ):

代码语言:javascript
复制
exit_now = check_exit()
if (exit_now == .true.) exit
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-10 13:29:16

为什么不像在示例中那样简单地使用逻辑函数并直接测试它(没有附加变量):

代码语言:javascript
复制
if ( check_exit() ) exit

或者,如果您想使用整数,例如负数表示错误,而正整数表示警告:

代码语言:javascript
复制
if ( complicated_check() > 0 ) then
  print *, 'WARNING'
elseif( complicated_check() < 0 ) then
  exit
endif

虽然没有辅助变量,这开始变得低效;-)

票数 1
EN

Stack Overflow用户

发布于 2014-04-10 20:00:51

如果您想处理多个返回值,假设f90+可以使用select case来避免辅助变量(或者两次调用该函数)

代码语言:javascript
复制
 select case ( complicated_check() )
  case (1:)
   print*,'Warning'
  case (:-1)
   exit
 end select
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22988559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档