关于函数返回值和RESULT的问题?

bsbnsync 2005-07-07 12:07:22
在看书关于函数的部分时看到这样的一段话如下:

“可以将函数要返回的数值赋值给变量Result。如果函数体中存在着一些由于判断而产生
的分支语句时,要在每一个分支中设置返回值。通常要根据函数的返回值来确定下一步的操
作。注意这里与C 和C++不一样,把一个值赋给Result,函数并不会结束。"

"注意这里与C 和C++不一样,把一个值赋给Result,函数并不会结束。"
这句话该怎么理解?
function getchar():char;
begin
result:='a';
end;
ch:=getchar;
执行ch:=getchar;这句后,ch为a,那上面的这句话是不是说在执行ch:=getchar后依然保留了result变量,还是执行ch:=getchar后函数getchar()依然驻留在内存中。
那procedure声明的过程又如何呢
...全文
273 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzwmjl 2005-07-07
  • 打赏
  • 举报
回复
欢迎加入DELPHI 程序员群 1805366 参加技术讨论 !!
何鲁青 2005-07-07
  • 打赏
  • 举报
回复
function aa(a:boolean):Char;
begin
if aa then result:='a'
else result:='b';
showmessage('hehehehe');
end;
///////////////////这里面在所有分支语句里面都要有result的赋值,这个很好理解,因为分支语句在不同情况下只能执行一个分支,为了保证返回值的正确当然要每个分支都有赋值语句了
另外再C++中,通常函数都是把一个值赋给Result,作为函数结束的,这一点可以看C++的语法
但是在delphi中就没有这种情况
例如上面那个函数,虽然result已经赋了值了,但是还会执行showmessage那一句...这就是他们的不同。。。
topforver 2005-07-07
  • 打赏
  • 举报
回复
begin
if(true) then
result:= 'a';

showMessage('这样看得还没结束了吧,要强行结束加Exit');
if(true) then begin
result:= 'a';
exit;
end;
showMessage('看不到这个吧');
end;
------------------
看看上面的代码,你就知道什么叫还没结束
wtg476 2005-07-07
  • 打赏
  • 举报
回复
bsbnsync 2005-07-07
  • 打赏
  • 举报
回复
还是指在函数内当执行 result:=a;后 还可以执行后面的其他语句。只是result作为函数的返回值。
function getchar():char;
var
i:integer;
begin
result:='a';
i:=100+200;
end;
ch:=getchar;
还是在执行ch:=getchar;时 函数getchar()中的i:=100+200;也会得到执行。
就是说在DELPHI中函数内的所有语句总是会顺序完全执行完,result只是函数的返回值,而不像C、C++中的函数,当一遇到return就立刻退出,后面的其他语句得不到执行.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧