如何回到代码中的某个点

时间:2017-08-03 21:48:48

标签: c++

我是C ++编程的新手。

我只是想知道是否有任何方法可以在不使用read -n1 -p "Do you want to CONTINUE pushing? [Y/n]" doit < /dev/ttywhile循环的情况下返回代码中的某个点。

以下是一个例子:

do-while

所以,如果玩家失败了,我想再问这个问题,所以回到:

  

cout&lt;&lt; “什么是2 + 2?”;

有没有办法不使用循环?

5 个答案:

答案 0 :(得分:1)

DontDoThis:
...
goto DontDoThis;   

就是这样。

DontDoThis:是一个“标签”,goto DontDoThis将执行跳转到指定的标签。但是,就像标签上的名字所说的那样,不要这样做!使用goto涉及现代编码中的不良做法,有更好的方法来处理循环。

您应该将a初始化为0,然后使用while (a != 4)循环。但那不是你的问题:))

答案 1 :(得分:1)

你想重复一些事情,直到条件满足为止。这是循环的定义,有很多方法可以在C ++中编写循环。您展示的示例最好使用do-while循环处理:

int a; 

do
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}
while (true);

虽然您可以使用whilefor循环代替:

int a; 

while (true)
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}

int a; 

for(;;)
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}

话虽如此,为了回答您的实际问题,您可以使用goto语句,而无需任何其他循环说明:

int a; 

askTheUser:

cout << "What's 2+2?";
cin >> a;

if (a != 4) {
    cout << "WRONG! Try again!";
    goto askTheUser;
}

cout << "Nice!";

但是,goto在现代编码中很少使用,在应用编译器优化后,它不可能比do-while循环更好地执行,并且它在如何使用它方面存在限制。

答案 2 :(得分:1)

用于多次执行代码块的首选语言构造是循环,可以是fordo-whilewhile形式。 所以我按如下方式编写代码:

int a;
bool correctGuess = false;

while (!correctGuess) {
  cout << "What's 2+2?";
  cin >> a;
  if (a==4) {cout << "Nice!"; correctGuess = true; }
  else { cout << "WRONG! Try again!"; }
}

另一种方式是使用递归,即在满足特定条件之前调用自身的函数。然而,对于您的场景来说,这似乎是一种复杂的方法。

如果 - 由于任何原因 - 你被要求不使用这种类型的循环,你可以使用goto - 语句(尽管这显然不是首选方法; goto - 语句现在很少使用):

   int a;

loop:
   cout << "What's 2+2?";
   cin >> a;
   if (a==4) {cout << "Nice!";}
   else {
      cout << "WRONG! Try again!";
      goto loop;
   }

答案 3 :(得分:0)

另一个循环语句是for

另一种方法是使用函数 - 可以重复调用它们。

答案 4 :(得分:0)

好吧,如果您不想使用whiledo-while ...

for (;;) //same as while(true)
{
    int a; 
    cout << "What's 2+2?";
    cin >> a;
    if (a==4) 
    {
        cout << "Nice!";
        break;
    }
    else 
    {
        cout << "WRONG! Try again!";
    }
}