写飞机大战时看到别人代码里有as:和 else goto as;
代码如下
有人知道这是什么用法吗?
帮忙解释下,谢啦
//游戏结束
void Game::GameOver()
{
system("cls");
COORD p1 = { 28,9 };
COORD p2 = { 53,15 };
drawFrame(p1, p2, '=', '|');
SetPos(36, 12);
string str = "Game Over!";
for (int i = 0; i < str.size(); i++)
{
Sleep(80);
cout << str[i];
}
Sleep(1000);
system("cls");
drawFrame(p1, p2, '=', '|');
SetPos(31, 11);
cout << "击落敌机:" << score / 5 << " 架";
SetPos(31, 12);
cout << "得 分:" << score;
SetPos(31, 13);
cout << "获得称号:" << title;
SetPos(30, 18);
Sleep(1000);
cout << "继续? 是(y)| 否(n)";
as:
char x = _getch();
if (x == 'n')
{
exit(0);
}
else if (x == 'y')
{
system("cls");
Game game;
int a = drawMenu(); // 绘制游戏开始界面主菜单
if (a == 2)
game.rank = 20;
system("cls");
drawPlaying(); // 绘制游戏界面框架
game.Playing();
}
else goto as;
}
goto 语句可用于跳出深嵌套循环
goto语句可以往后跳,也可以往前跳,且一直往前执行
goto只能在函数体内跳转,不能跳到函数体外的函数。即goto有局部作用域,需要在同一个栈内。
goto 语句标号由一个有效地标识符和符号";"组成,其中,标识符的命名规则与变量名称相同,即由字母、数字和下划线组成,且第一个字符必须是字母或下划线。执行goto语句后,程序就会跳转到语句标号处,并执行其后的语句。
通常goto语句与if条件语句连用,但是,goto语句在给程序带来灵活性的同时,也会使得使程序结构层次不清,而且不易读,所以要合理运用该语句。
这是goto语句啊,as是标签
在需要的时候,用 goto as可以将代码跳转到as标签指示的地方
一般都不建议使用goto语句,虽然看着很厉害,方便,但破坏代码的结构,容易出问题
学习的时候可以用一用。有些代码用循环之类的太不方便,goto语句可以直接跳转到你想去的代码。但也不是万能的,有些代码块你是无法goto的,比如在循环外想goto到一个循环内部