C 语言 goto 语句
C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的其它语句。
注意:
在任何编程语言中,都不建议使用 goto 语句。 因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。 任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。
但是,如果 goto 语句如果用的好,可以达到很精妙的效果
goto 语句语法格式
C 语言中 goto 语句的语法格式如下
goto label; .. . label: statement;
label 可以是任何除 C 关键字以外的任何文本,但我们推荐使用一看就懂的 标识符。 label 可以放在任何位置,我们可以设置在 C 程序中 goto 语句的前面或者后面。
C 语言 goto 语句流程图
范例: 使用 goto 语句在程序中跳转
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> int main () { // 定义局部变量 cnt 用于计数 int cnt = 10; LOOP:do { if( cnt == 13 ) { cnt += 1; //复合赋值运算符 goto LOOP; //跳过此次迭代,进行下一次迭代 我们会发现输出中没有 13 } printf("cnt 的值: %d\n", cnt); cnt++; // cnt 自增 }while( cnt < 17 ); return 0; }
编译运行上面的范例,输出结果如下
$ gcc main.c && a.out cnt 的值: 10 cnt 的值: 11 cnt 的值: 12 cnt 的值: 14 cnt 的值: 15 cnt 的值: 16
我们可以使用 continue
语句 来改写上面的范例,避免使用 goto
语句
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> int main () { // 定义局部变量 cnt 用于计数 int cnt = 10; do { if( cnt == 13 ) { cnt += 1; // 复合赋值运算符 continue; // 跳过此次迭代,进行下一次迭代 我们会发现输出中没有 13 } printf("cnt 的值: %d\n", cnt); cnt++; // cnt 自增 }while( cnt < 17 ); return 0; }
编译和运行上面代码,输出结果如下
$ gcc main.c && a.out cnt 的值: 10 cnt 的值: 11 cnt 的值: 12 cnt 的值: 14 cnt 的值: 15 cnt 的值: 16