-5

我可以使用 Goto 跳转到其他功能吗?例如

void x(){
 printf("hello");
}

void y(){
 printf("hi");
}

int main(){     /*assume that all var are declared */

 scanf("%d",&input);
  if(input == 1) goto y();
  else(input == 2) goto x();
}
4

4 回答 4

3

您不能用于goto分支到不同的功能;agoto只能在当前函数内分支。您只需调用函数x()y().

于 2013-08-23T18:15:04.750 回答
0

从您的问题来看,您似乎正在学习 C,并且您通常是编程的新手。如果是这种情况,我强烈建议你遵循一本好书。对于新手来说,C 不是一种简单的边做边学的好语言。它有很多陷阱,很容易在错误的位置添加逗号或分号,并且有一个完美运行(即编译和运行)的程序,它没有你所期望的!C 不像 Java 或 Python 那样牵着你的手。

至于你的问题,这个参考可能很有用。

另一个建议:goto尝试学习它的语法和语义,然后尽量避免在“真正的代码”中使用它,直到你成为专家 C 程序员。几乎任何程序都可以在没有gotos 的情况下创建。当一个专家程序员求助于gotos 可能是因为:

  • 它正在实施一些优化技巧,或者
  • goto手头的算法非常棘手,属于使代码更具可读性的罕见情况之一。
于 2013-08-23T19:06:32.650 回答
0

在大多数情况下,goto 是一个坏主意,通常可以避免。在此示例中,可以这样做:

if (input == 1)
{
 y();
}
else
{
 x();
}
于 2013-08-23T18:07:41.297 回答
-2

永远不要使用 goto。它丑陋,陈旧并且不必要地混淆了事物。

int main() {     /*assume that all var are declared */

    scanf("%d",&input);
    if(input == 1) {
        y();
    } else if (input == 2) {
        x();
    }
}  
于 2013-08-23T18:10:24.983 回答