我最近开始学习c ++,而我只是通过制作一个糟糕的小游戏来测试我所知道的。
我想跳回我的代码,所以我了解了一个goto语句。这是我的代码(不是全部,只是goto位)
moving:
if(moveChoice == "Forward"){
cout << "You moved Forward" << endl;
moveChoice = "";
if(firstTargetRand == 2){
cout << "You encountered a tree!" << endl;
}if(firstTargetRand != 2){
cout << "goto init" << endl;
goto moving;
}
}
现在&#34;转到移动&#34;被调用(用cout goto init检查),但这不起作用。我知道这是一个非常愚蠢的错误,但我看不出它有什么问题
答案 0 :(得分:4)
嗯,首先,我觉得有必要提一下goto几乎没有任何用处,并且就像评论所说的那样,这是主要的循环素材。
您的问题是您正在检查moveChoice ==“Forward”,然后将moveChoice设置为“”,然后返回,然后moveChoice ==“Forward”始终返回0.
如果你真的想要goto,试试这个:
if(moveChoice == "Forward"){
moving:
cout << "You moved Forward" << endl;
moveChoice = "";
if(firstTargetRand == 2){
cout << "You encountered a tree!" << endl;
}else{
cout << "goto init" << endl;
goto moving;
}
}
如果你对goto不太偏爱,试试这个:
while(moveChoice=="Forward"){
cout << "You moved Forward" << end1;
if(firstTargetRand == 2){
cout << "You encountered a tree!" << end1;
moveChoice = "";
}else{
cout << "goto init" << end1;
}
}