跳到主要内容

C 语言goto语句

提示
  1. goto语句的功能goto语句用于将程序控制转移到指定的标签。
  2. goto语句的使用:当程序遇到goto语句时,它会跳转到标签处并开始执行代码。
  3. 避免使用goto的理由goto语句可能导致代码出错且难以跟踪,但在某些情况下(如退出嵌套循环)可能有用。尽管如此,大多数情况下可以不使用goto来编写C程序。

goto语句允许我们将程序的控制权转移到指定的标签。

goto语句的语法

goto 标签;
... .. ...
... .. ...
标签:
语句;

标签是一个标识符。当遇到goto语句时,程序的控制权跳转到标签:,开始执行代码。

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);

// 如果用户输入负数,则跳转到jump
if (number < 0.0) {
goto jump;
}
sum += number;
}

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

return 0;
}

输出

1. 输入一个数字: 3
2. 输入一个数字: 4.3
3. 输入一个数字: 9.3
4. 输入一个数字: -2.9
总和 = 16.60
平均值 = 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程序。

这里有一句Bjarne Stroustrup(C++的创建者)的名言,"正因为'goto'可以做任何事,这正是我们不使用它的原因。"