codecamp

Fortran goto 语句

如下所示,这里的 goto 语句的用法与汇编语言的 goto 语句有点类似,指定一个行号即可无条件跳转到该行执行。如果是像下面这样调用 goto 语句的行在跳转到的行之前,那么它们之间的行都会被完全忽略。如示例 11 所示,a = 15 的赋值语句会被忽略所以 a 的值是在 goto 语句执行之前赋的值 10;同理,b = 11 的赋值语句在 goto 语句和跳转行之间会被忽略,跳转行的 b = 20 生效。如示例 12 所示,当 goto 语句跳转到它之前行执行时,就会造成无限循环,每次执行到 goto 语句就会又跳转到前面,这样 goto 语句后面的命令都不会被执行。

我们在使用 goto 语句时对跳转的行一定要非常注意,一不小心很容易造成死循环。建议使用 goto 语句的时候跳转到其后的行,杜绝跳转到前面的行。

为了提高代码可读性,我们不想将 goto 语句跳转的行直接指向一个操作或者命令,这时我们就可以用 continue 来代替跳转行,如示例 13 所示。

goto 行号

行号 操作或命令

!!! 示例 11
a = 10
goto 8
b = 11
a = 15
8 b = 20
print *, a, b ! 此处输出 a 的值为 10,b 的值为 20

!!! 示例 12

8 a = 10
b = 11
a = a + b
goto 8
b = b - a ! 永远不会被执行
print *, a, b ! 永远不会被执行

!!! 示例 13
8 continue
a = 10
b = 11
a = a + b
goto 8
Fortran if 语句
Fortran exit 语句
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }