fortran fortran中文资料网
手气不错
Article

031.selectCaseRanges_范围与列表匹配

2026年7月27日基础级

case选择器不仅可以匹配单个值,还可以匹配连续范围,或用逗号组合多个值和范围。本例使用分数区间完成等级分类。

语法结构

select case (selector)
case (lower:upper)
  ! selector位于闭区间lower到upper时执行
case (value_1, value_2, lower_2:upper_2)
  ! selector等于列表中的值或落入所列范围时执行
case default
  ! 没有任何case匹配时执行
end select
  • lower:upper表示包含上下界的闭区间,例如80:89包含80和89。
  • 一个case选择器可以用逗号列出多个单值或范围,只要其中任意一项匹配,就会执行该分支。
  • 同一个select case中的取值和范围不能互相重叠,否则编译器无法确定应该选择哪个分支。

本文代码

! select case可使用范围和列表匹配多个取值。
program selectCaseRangesDemo
  implicit none
  integer :: score

  score=85

  print "(A)","select case范围与列表:"
  select case (score)
  case (90:100)
    print "(A)","等级:优秀"
  case (80:89)
    print "(A)","等级:良好"
  case (60:69,70:79)
    print "(A)","等级:合格"
  case (0:59)
    print "(A)","等级:不合格"
  case default
    print "(A)","分数超出范围"
  end select
end program selectCaseRangesDemo

编译运行

(base) hong@hongdeMacBook-Pro 031.selectCaseRanges % gfortran exampleSelectCaseRanges.f90
(base) hong@hongdeMacBook-Pro 031.selectCaseRanges % ./a.out
select case范围与列表:
等级:良好

现象分析

score的值为85。它不属于90:100,但位于闭区间80:89内,因此程序进入该分支并输出“等级:良好”。匹配成功后,其余case分支不再执行。

case (60:69,70:79)把两个范围列在同一分支中,其中任意一个范围匹配都会输出“等级:合格”。当分数不在0到100内时,所有显式范围均不匹配,程序进入case default

核心知识点

  • case (a:b)匹配从a到b的闭区间,a和b本身也属于该范围。
  • 同一个case中可以用逗号组合多个单值和范围,任意一项匹配都会进入该分支。
  • 各分支的值域必须互不重叠;匹配成功后只执行一个分支,未匹配值由case default处理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注