free pascal中goto语句能从过程中直接跳到主程序吗?若不能有何简便语句可以代替??
freepascal中goto语句能从过程中直接跳到主程序吗?若不能有何简便语句可以代替??我在把一个goto语句置于一个过程中,想让它跳到主程序,但出现了这种错误,网上...
free pascal中goto语句能从过程中直接跳到主程序吗?若不能有何简便语句可以代替?? 我在把一个goto语句置于一个过程中,想让它跳到主程序,但出现了这种错误,网上有人说goto语句不能从过程中跳出,怎么回事?谢谢啦~~
展开
4个回答
展开全部
当然不能啦
过程是一个子程序,跟主程序是两码事
我有一个办法
不过很难表达
就是你想跳到主程序的那个地方,把你要的一段程序放进过程里去不就行了吗?
还不懂?
给个例子
原来的:
program ex;
label 1;
var
a,b,c:integer;
procedure lzws(x:integer);
begin
xxx
.
.
.
.
.
xxx
goto 1
end;
begin
1:yyy
.
.
.
.
.
.
yyy;
zzz
.
.
.
.
.
.
zzz;
end.
改了以后:
program ex;
var
a,b,c:integer;
procedure lzws(x:integer);
begin
xxx
.
.
.
.
.
xxx
yyy
.
.
.
.
.
.
yyy;
end;
begin
zzz
.
.
.
.
.
.
zzz;
end.
过程是一个子程序,跟主程序是两码事
我有一个办法
不过很难表达
就是你想跳到主程序的那个地方,把你要的一段程序放进过程里去不就行了吗?
还不懂?
给个例子
原来的:
program ex;
label 1;
var
a,b,c:integer;
procedure lzws(x:integer);
begin
xxx
.
.
.
.
.
xxx
goto 1
end;
begin
1:yyy
.
.
.
.
.
.
yyy;
zzz
.
.
.
.
.
.
zzz;
end.
改了以后:
program ex;
var
a,b,c:integer;
procedure lzws(x:integer);
begin
xxx
.
.
.
.
.
xxx
yyy
.
.
.
.
.
.
yyy;
end;
begin
zzz
.
.
.
.
.
.
zzz;
end.
展开全部
不能。。goto只能在同一过程或函数中跳转。。。不过真正的程序一般是不用goto也不需要用goto的。。。要跳到主程序直接用 exit 吧。。。
如果要连续跳出多层子程序的话,可以用用全局布尔型控制。。类似 if canjumpout then exit; 这种
如果要连续跳出多层子程序的话,可以用用全局布尔型控制。。类似 if canjumpout then exit; 这种
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能!
如果你直接跳回主程序,那你调用过程时的堆栈状态就全乱啦。
你可以用一个goto 语句跳到过程的最后,让它自动返回主程序去。
如果你直接跳回主程序,那你调用过程时的堆栈状态就全乱啦。
你可以用一个goto 语句跳到过程的最后,让它自动返回主程序去。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用exit应该能退出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询