首页 > 编程笔记 > C语言笔记 阅读:7

C语言goto的用法(附带实例)

C语言中的 goto 语句为无条件转移语句,可以使程序立即跳转到函数内部的任意一条可执行语句处。

goto 关键字后面带一个标识符,该标识符是同一个函数内某条语句的标号。标号可以出现在任何可执行语句的前面,并且以一个冒号“:”作为后缀。

goto语句的一般形式如下:
goto 标识符;
goto 后的标识符就是要跳转的目标,当然这个标识符要在程序的其他位置给出,并且其标识符要位于函数内部。

例如:
#include <stdio.h>

int main() {
    goto Show;
    printf("the message before ShowMessage");
Show:
    printf("ShowMessage");
    return 0;
}
程序运行结果为:

ShowMessage

在上述代码中,goto 后的 Show 为跳转的标识符,第 3 行的“Show:”代码表示 goto 语句要跳转的位置,因此第 2 行的 printf() 函数将不会被执行,而会执行第 4 行的 printf() 函数。

注意,跳转的方向可以向前,也可以向后;可以跳出一个循环,也可以跳入一个循环。


【实例】本实例要求在执行循环操作的过程中,当用户输入退出指令后,程序跳转到循环外部。
#include <stdio.h>
int main()
{
    int iStep; /* 定义变量,表示外层 for 循环的步骤号 */
    int iSelect; /* 定义变量,保存用户输入的选项 */
    for(iStep = 1; iStep < 10; iStep++) /* 外层 for 循环,记录循环的次数(步骤号) */
    {
        printf("步骤号:%d\n", iStep); /* 输出当前循环的步骤号 */
        do /* 内层 do...while 循环,保证用户输入 0 或 99 */
        {
            printf("请输入一个选择序号:\n"); /* 输出提示信息 */
            printf("(0 是退出,99 是下一步)\n"); /* 输出提示信息 */
            scanf("%d", &iSelect); /* 用户输入选择 */
            if(iSelect == 0) /* 判断输入的是否为 0 */
            {
                goto exit; /* 如果是 0,执行 goto 跳转语句 */
            }
        } while(iSelect != 99); /* 判断用户输入,只要不是 99 就重新输入序号 */
    }
exit: printf("退出程序\n"); /* 跳转语句执行位置 */
    return 0;
}
运行程序,结果为:
步骤号:1
请输入一个选择:
(0 是退出,99 是下一步)
99
步骤号:2
请输入一个选择:
(0 是退出,99 是下一步)
0
退出程序
程序运行时,外层 for 循环控制程序步骤,输出的循环步骤为 1。信息提示输入数字,其中 0 表示退出,99 表示下一个步骤。

在 for 循环中使用 do while 语句判断用户输入,当条件为假时,循环结束并执行 for 循环的下一步。假如用户输入数字 3,既不退出也不执行下一步骤,而是继续提醒输入序号。当输入数字为 99 时,跳转到下一步,显示提示信息“步骤号:2”。

如果用户输入的是 0,那么通过 if 语句判断为真,执行其中的 goto 语句进行跳转,其中 exit 为跳转的标识符。循环的外部使用“exit:”表示 goto 跳转的位置,输出“退出程序!”。

相关文章