Delphi 函数返回值的问题

linsoo 2011-05-18 09:29:25

假设有个函数如下:

function test(x:string) : integer;
begin
if x = 'aaa' then
result := 1;
end;



我测试了下,一般好像都是返回0,但是在某的机器上出现了疑似返回随机负数的情况(无法确定)

所以来问下这个函数的返回值有没有可能是随机值?谢谢~
...全文
701 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sundayzhao 2011-05-20
  • 打赏
  • 举报
回复
这个写法严重错误,不满足条件的返回值随机。
dsifx 2011-05-20
  • 打赏
  • 举报
回复
来学习下
jjpweb 2011-05-19
  • 打赏
  • 举报
回复
满足条件是1,否则随机
goodhj 2011-05-19
  • 打赏
  • 举报
回复
我错了,是我没验证
Seamour 2011-05-19
  • 打赏
  • 举报
回复
胡说八道
[Quote=引用 6 楼 goodhj 的回复:]
虽然你写得不够严谨,但是没有可能返回随机数的,因为你的函数返回结果是整数,没有值,DELPHI会自动赋予0的,你可以自己试验下就知道了,定义一个整型变量,不赋值,看这个变量是0还是随机值?所以你的这个函数如果不满足条件的话,返回值一定是0,这是确定的
[/Quote]
annwatasi 2011-05-19
  • 打赏
  • 举报
回复
呵呵,好热闹哦,学习。
goodhj 2011-05-18
  • 打赏
  • 举报
回复
虽然你写得不够严谨,但是没有可能返回随机数的,因为你的函数返回结果是整数,没有值,DELPHI会自动赋予0的,你可以自己试验下就知道了,定义一个整型变量,不赋值,看这个变量是0还是随机值?所以你的这个函数如果不满足条件的话,返回值一定是0,这是确定的
linsoo 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hongqi162 的回复:]

如果你对函数的返回值判断针对是不是等于1,也就是不等于1的时候不关心其值是多少,这样写是没有问题的,否则你的程序写的不够严谨

function test(x:string) : integer;
begin
result := 0;
if x = 'aaa' then
result := 1;
end;
[/Quote]

嗯,我就是想确认这样的不严谨是否会导致这个函数返回值是随机数....因为我自己测试,调用多少次这个函数都会返回0,也就是说返回值被自动初始化为0了。
hongqi162 2011-05-18
  • 打赏
  • 举报
回复
如果你对函数的返回值判断针对是不是等于1,也就是不等于1的时候不关心其值是多少,这样写是没有问题的,否则你的程序写的不够严谨

function test(x:string) : integer;
begin
result := 0;
if x = 'aaa' then
result := 1;
end;
cas005 2011-05-18
  • 打赏
  • 举报
回复
是随机数的吧?没有赋返回值的函数就相当于过程来用,它的返回值是随机的。
“我测试了下,一般好像都是返回0,但是在某的机器上出现了疑似返回随机负数的情况(无法确定)

运行程序的时候,第一次调用函数得的返回值有可能是0吧,在进程没有被结束之前,你调用N次函数,得到的返回值还是第一次调用的0。只有程序初始化的时候,再得到另一个随机数。。。。
linsoo 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 m617105 的回复:]

你这个函数当x不等于"aaa"的时候没有设定返回值。
若还没有给 Result 或函数名赋值,程序就结束了,则函数的返回值没有被定义(undefined)。
[/Quote]

没错,如果是undefined,那么值是有可能是随机负值吗?还是说一定是0?
iqyely 2011-05-18
  • 打赏
  • 举报
回复
呵呵,来看看了
浩南_哥 2011-05-18
  • 打赏
  • 举报
回复
你这个函数当x不等于"aaa"的时候没有设定返回值。
若还没有给 Result 或函数名赋值,程序就结束了,则函数的返回值没有被定义(undefined)。
ok1411 2011-05-18
  • 打赏
  • 举报
回复
hint warning要多注意
SQLDebug_Fan 2011-05-18
  • 打赏
  • 举报
回复
函数返回值一定要所有执行路径都有赋值,否则返回的是随机值。
linsoo 2011-05-18
  • 打赏
  • 举报
回复
所以该初始化的变量一定记得初始化,否则到时候出问题了查死人的呀......
7年 2011-05-18
  • 打赏
  • 举报
回复
程序不严谨
hongss 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hongqi162 的回复:]
如果你对函数的返回值判断针对是不是等于1,也就是不等于1的时候不关心其值是多少,这样写是没有问题的,否则你的程序写的不够严谨

function test(x:string) : integer;
begin
result := 0;
if x = 'aaa' then
result := 1;
end;
[/Quote]

chenxupro 2011-05-18
  • 打赏
  • 举报
回复
因为条件不满足的时候没有给出返回值,那么返回值就是编译器产生的…
ouyanghaiwa2 2011-05-18
  • 打赏
  • 举报
回复
我返回值是5898313
加载更多回复(2)

16,747

社区成员

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

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