C++里 goto语句用法?

比如他goto到一个label1处,开始从label1处运行,什么时候结束这个goto反回引发goto的起始位置?,另外label可以有结束定义语句吗?

哆啦的时光机
浏览 995回答 3
3回答

月关宝盒

goto是无条件跳转,只能在goto语句出现处改变控制流,无法通过本身返回。要用goto返回,可以定义多个label,在不同位置配合不同label使用goto语句。label在函数内定义,作用域就是整个函数,和其它名称一样无法改变。由于不是左值,它没有生存期,仅在编译期有意义。----everyone998 错误。编译器至少会对label标识符进行语义检查。函数调用和goto是不同的。函数调用或返回时,一般的实现中需要根据调用约定清理堆栈。调用时先保存现场,复制实际参数,然后才是跳转,并不是直接无条件跳转那么简单。也因此goto语句无法跨函数跳转。

心有法竹

goto就是强制跳转,不具有智能性,编译器不会检测错误,for,while等语句实现的方法其实是在结束处使用一个if语句后goto到开头,而所谓的函数其实在调用函数和函数结尾处使用goto语句。C++里面如果在goto调用以及目标语句间有新的定义并且使同级等情况的编译器会报错,否则编译器不会管。goto语句如果想结束的话可以仿照函数的写法在返回的地方在加个goto语句。不过一般不要用,goto语句时用来跳出多重循环的,不然很容易错误。

慕妹3242003

goto其实是程序运行完后,在return前,再执行goto语句的,给你个例子参考,你用F10但不单步调试下就知道了int main(){int ap =0;while(cin>>ap){if (ap>0){goto p1;p1:cout<<"greater than zero\n";}else{goto p2;p2:cout<<"less than zero\n";}}return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP