我是C ++编程的新手。
我只是想知道是否有任何方法可以在不使用read -n1 -p "Do you want to CONTINUE pushing? [Y/n]" doit < /dev/tty
或while
循环的情况下返回代码中的某个点。
以下是一个例子:
do-while
所以,如果玩家失败了,我想再问这个问题,所以回到:
cout&lt;&lt; “什么是2 + 2?”;
有没有办法不使用循环?
答案 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);
虽然您可以使用while
或for
循环代替:
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)
用于多次执行代码块的首选语言构造是循环,可以是for
,do-while
或while
形式。
所以我按如下方式编写代码:
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)
好吧,如果您不想使用while
或do-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!";
}
}