C 语言基础教程

C 语言流程控制

C 语言函数

C 语言数组

C 语言指针

C 语言字符串

C 语言结构体

C 语言文件

C 其他

C 语言参考手册

C 语言 goto 语句

在本教程中,您将学习在C语言编程中创建goto语句。此外,您还将学习何时使用goto语句以及何时不使用它。

goto语句使我们可以将程序的控制权转移到指定的label 标签。

goto语句的语法

goto label;
... .. ...
... .. ...
label: 
statement;

label是一个标识符。goto遇到该语句时,控制程序跳至label:并开始执行代码。

goto语句如何工作?

示例:goto语句

//程序计算正数的总和
//如果用户输入一个负数,则显示总和和平均值。
#include <stdio.h>

int main() {

   const int maxInput = 100;
   int i;
   double number, average, sum = 0.0;

   for (i = 1; i <= maxInput; ++i) {
      printf("%d. 输入数字: ", i);
      scanf("%lf", &number);
      
      //如果用户输入的是负数,则跳转
      if (number < 0.0) {
         goto jump;
      }
      sum += number;
   }

jump:
   average = sum / (i - 1);
   printf("Sum(总和) = %.2f\n", sum);
   printf("Average(平均值) = %.2f", average);

   return 0;
}

输出结果

1. 输入数字: 3
2. 输入数字: 4.3
3. 输入数字: 9.3
4. 输入数字: -2.9
Sum(总和) = 16.60
Average(平均值) = 5.53

避免或少用Goto语句的原因

使用goto语句可能会导致代码有错误并且难以遵循。例如,

one:
for (i = 0; i < number; ++i)
{
    test += i;
    goto two;
}
two: 
if (test > 5) {
  goto three;
}
... .. ...

此外,goto语句还允许您执行不良操作,例如跳出范围。

话虽如此,goto有时可能会有用。例如:打破嵌套循环。

您应该使用goto吗?

如果您认为使用goto语句可以简化程序,则可以使用它。话虽如此,goto它很少有用,您也可以在不使用任何goto语句的情况下,创建任何C程序。

这是C ++的创建者Bjarne Stroustrup的话:“'goto'无所不能的事实,正是我们不使用它的原因。”