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
提交
取消