📜  C goto声明

📅  最后修改于: 2020-10-04 12:16:03             🧑  作者: Mango

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

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


goto语句的语法

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

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

How goto statement works?


示例:goto语句

// Program to calculate the sum and average of positive numbers
// If the user enters a negative number, the sum and average are displayed.

#include 

int main() {

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

   for (i = 1; i <= maxInput; ++i) {
      printf("%d. Enter a number: ", i);
      scanf("%lf", &number);
      
      // go to jump if the user enters a negative 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. Enter a number: 3
2. Enter a number: 4.3
3. Enter a number: 9.3
4. Enter a number: -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’可以做任何事情的事实正是我们不使用它的原因。”