转到无法正常使用C ++

时间:2014-07-14 19:16:23

标签: c++ goto

我最近开始学习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检查),但这不起作用。我知道这是一个非常愚蠢的错误,但我看不出它有什么问题

1 个答案:

答案 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;
    }
}