C++ goto 语句执行而不调用

C++ goto statement execute without calling

本文关键字:调用 执行 goto 语句 C++      更新时间:2023-10-16

我正在尝试制作一个简单的代码来演示Goto语句的好处。

我把goto标签放在一个if语句里:

 int x;
   cin>>x;
   if (x == 10){
      goto win;
   }else{
      cout<<"its not a 10";
   }
   win: cout<<"you win";

当 x 不是 10 时出现问题,如果为 9,则会显示它不是10你赢

我试图把胜利:cout<<"You win"; 放在 if 语句之前,仍然是同样的问题。

如果x不等于10,则会发生else块。然后,控制将继续向前流动,直到达到cout<<"you win"。仅仅因为在那cout之前有一个标签,并不意味着它只会发生在你这样做goto win;。它仍然是函数控制流的一部分。

这根本不是goto的适当使用(甚至不能说)。你应该做的是:

if (x == 10){
   cout<<"you win";
}else{
   cout<<"its not a 10";
}

如果你真的想把cout<<"you win"移动到另一个代码块,你需要把它放在它自己的函数中:

void print_win() {
  cout<<"you win";
}

然后在第一个if块中执行print_win();

这是演示您使用 goto 语句所犯错误的代码: 控制流被转移到一个逻辑流 (x==10) 中达到的点,在所有其他情况下也是如此。

很难

证明goto语句的好处。你必须想出一个不是if或开关的逻辑。

您的代码示例演示了 goto 语句没有任何好处;

它包含一个逻辑错误,因为控制不考虑 x 的值将实现标签获胜。所以它总是会显示

you win

如果没有 goto 语句,代码会好得多。例如

int x;
cin >> x;
if ( x == 10 )
{
   cout << "you win";
}
else
{
   cout << "its not a 10";
}