C语言goto的用法(附带实例)
C语言中的 goto 语句为无条件转移语句,可以使程序立即跳转到函数内部的任意一条可执行语句处。
goto 关键字后面带一个标识符,该标识符是同一个函数内某条语句的标号。标号可以出现在任何可执行语句的前面,并且以一个冒号“:”作为后缀。
goto语句的一般形式如下:
例如:
【实例】本实例要求在执行循环操作的过程中,当用户输入退出指令后,程序跳转到循环外部。
在 for 循环中使用 do while 语句判断用户输入,当条件为假时,循环结束并执行 for 循环的下一步。假如用户输入数字 3,既不退出也不执行下一步骤,而是继续提醒输入序号。当输入数字为 99 时,跳转到下一步,显示提示信息“步骤号:2”。
如果用户输入的是 0,那么通过 if 语句判断为真,执行其中的 goto 语句进行跳转,其中 exit 为跳转的标识符。循环的外部使用“exit:”表示 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 跳转的位置,输出“退出程序!”。