if条件语句
Fortran中使用条件语句if(<condition>)then
来表示某条语句在满足条件时被执行,其中<condition>
必须是一个逻辑值。
单分支
当if
结构中的语句只有一行时,可是省略then
和end if
,写为一行
program main
implicit none
integer::angle
angle=10
if (angle < 90) then
write(*,*)"锐角"
end if
!等价形式
if(angle < 90) write(*,*)"锐角"
end program main
$ fpm run
锐角
锐角
- 在 if 结构中缩进代码是一种很好的做法,以使代码更具可读性。
两个分支
当有两个分支时,需要增加else
语句或else if
语句
program main
implicit none
integer::angle
angle=90
if (angle < 90) then
write(*,*)"锐角"
else
write(*,*)"不是锐角"
end if
!
if (angle < 90) then
write(*,*)"锐角"
else if(angle == 90) then
write(*,*)"直角"
end if
end program main
$ fpm run
不是锐角
直角
- 注意
else if
后面还有一个then
多个分支
可以使用多个else if
一直连接下去
program main
implicit none
integer::angle
angle=120
if (angle < 90) then
write(*,*)"锐角"
else if(angle == 90) then
write(*,*)"直角"
else if(angle < 180) then
write(*,*)"钝角"
else if(angle == 180) then
write(*,*)"平角"
end if
end program main
$ fpm run
钝角
- Fortran中的if语句并没有短路机制,所以例如
if( i <= 10 .and. a(i) > 1)
,数组a的大小为10,这样的语法并不能保证在运行时不出错。
program main
implicit none
integer::a(10)
integer::i
i=11
a=2
if (i<=10 .and.a(i)>1)then
write(*,*)"hello"
end if
end program main
$ fpm run
At line 7 of file app/main.f90
Fortran runtime error: Index '11' of dimension 1 of array 'a' above upper bound of 10