Delphi 函数返回值的问题

linsoo 2011-05-18 09:29:25

假设有个函数如下:

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



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

所以来问下这个函数的返回值有没有可能是随机值?谢谢~
...全文
671 22 打赏 收藏 转发到动态 举报
写回复
用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)
函数由一句或多句代码组成,可以实现某个特定的功能。使用函数可以使代码更加易读、易懂,加快编程速度及减少重复代码。过程与函数类似,过程与函数最重要的区别在于,过程没有返回值,而函数能有返回值。   在Delphi 7.0中,已为我们定义好了非常多的函数,大致分类有6种:数据类型转换函数、字符串、数组操作函数、文件、磁盘操作函数、内存、指针操作函数、数学运算函数、日期函数。   在Delphi中调用函数,一般情况下可以直接使用函数即可,但由于有一些函数未包含在Uses中列出的单元中(默认单元有Windows,Messages,SysUtils,Variants,Classes,Graphics, Controls,Forms,Dialogs;),所以需要我们手动添加单元。比如,MidStr函数就未包含在这些单元中,MidStr所属单元在 StrUtils中,因此我们将StrUtils添加Uses中即可。   在本手册中,凡是未包含在默认列出的单元中的函数,都标明了其所属的单元,使用时应当注意。   一、数据类型转换函数   在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。   1.FloatToStr   功能说明:该函数用于将“浮点型”转换成“字符型”。   参考实例:   Edit1.Text := FloatToStr(1.981);
初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言 初学 Delphi 嵌入汇编[2] - 汇编语言关键字 初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子 初学 Delphi 嵌入汇编[4] - 寄存器在过程与函数中的使用 初学 Delphi 嵌入汇编[5] - 寄存器在过程与函数中的使用 - 续 初学 Delphi 嵌入汇编[6] - & 操作符 初学 Delphi 嵌入汇编[7] - 使用常量 初学 Delphi 嵌入汇编[8] - 8 位寄存器、16 位寄存器与 32 位寄存器 初学 Delphi 嵌入汇编[9] - asm 可以代替 begin 初学 Delphi 嵌入汇编[10] - 函数返回值与寄存器 初学 Delphi 嵌入汇编[11] - 用汇编重写一个 Delphi 函数 初学 Delphi 嵌入汇编[12] - 在汇编代码中可以直接使用 Result 初学 Delphi 嵌入汇编[13] - 地址参数用 [] 取值 初学 Delphi 嵌入汇编[14] - 常量与变量在汇编中的一个区别 初学 Delphi 嵌入汇编[15] - 需要保护的寄存器 初学 Delphi 嵌入汇编[16] - 进制的表示方法 初学 Delphi 嵌入汇编[17] - 逻辑运算 初学 Delphi 嵌入汇编[18] - SHL 与 SHR 初学 Delphi 嵌入汇编[19] - Delphi 的无符号整数类型 初学 Delphi 嵌入汇编[20] - Delphi 的 Integer 类型 初学 Delphi 嵌入汇编[21] - Delphi 的其他整数类型 初学 Delphi 嵌入汇编[22] - 在汇编代码中使用记录 初学 Delphi 嵌入汇编[23] - LOOP 循环 初学 Delphi 嵌入汇编[24] - 汇编语言的简单数据类型 初学 Delphi 嵌入汇编[25] - 在汇编中调用函数 初学 Delphi 嵌入汇编[26] - 大小写字母转换 初学 Delphi 嵌入汇编[27] - XCHG 指令: 交换寄存器的内容 初学 Delphi 嵌入汇编[28] - 把 EAX 的值置为 0 的三种方法与效率 初学 Delphi 嵌入汇编[29] - 寄存器所能接受的数值范围 初学 Delphi 嵌入汇编[30] - 寄存器表

16,748

社区成员

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

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