我正在尝试制作一个简单的代码来演示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&lt;&lt;“你赢了”;在if语句之前仍然存在同样的问题。
答案 0 :(得分:11)
如果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";
}
然后在第一个print_win();
块中执行if
。
答案 1 :(得分:1)
这是用于演示您使用goto语句所犯错误的代码:控制流被转移到一个逻辑流(x == 10)和其他所有情况下达到的点。
演示goto语句的好处非常困难。你必须想出一个不是if或者开关的逻辑。
答案 2 :(得分:0)
您的代码示例演示了goto语句没有任何好处;
它包含一个逻辑错误,因为控制不包含x的值将实现标签获胜。所以它总会显示
you win
如果没有goto语句,代码会好得多。例如
int x;
cin >> x;
if ( x == 10 )
{
cout << "you win";
}
else
{
cout << "its not a 10";
}