c++primer中goto语句一章 begin: ......... int sz=get_size(); if(sz<=0){goto begin;} 讲到向前跳转时,要撤销变量sz,请问如何撤销。
2 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
撤销的工作不是你完成的,而是系统自动撤销的。
而且你的说法有误。
向后跳跃(即往上跳),向前跳跃(即往下跳)
向前跳跃会可能跳过变量定义,而造成使用错误。
向后跳跃则不会出现这种问题,原因就是其中提到的会撤销变量,并在遇到其定义时重新定义它。
// 写一个例子你参考下:
// 程序是死循环,在调试模式下自己一步步运行分析,注释已说明结果
#include <stdio.h>
int main()
{
label1:
goto begin; // 跳到标签label2时候,y定义被跳过,下面的y+=10会出错
int y = 0;
label2:
int x = 10;
printf("x=%d", x);
x+=10;
y += 10; // 由于跳过定义,使用出错
printf("\ny=%d", y);
// 跳回到label1的时候会撤销x,y(这里y使用出错这里我们不考虑它),
// 再次遇到int x的时候就会重新定义
goto label1;
return 0;
}
添加回答
举报
0/150
提交
取消