【问题标题】:Is function's result always initialized? [duplicate]函数的结果总是初始化吗? [复制] 【发布时间】:2011-03-25 07:01:07 【问题描述】: 可能重复:What is the default value of Result in Delphi 类似于this question,我现在问如下。 function Test:Boolean; begin end; 结果值总是是否保证为 false(0)?整数值不是,布尔值也是? 【问题讨论】: 标签: delphi types 【解决方案1】: 不,如果你不初始化一个值类型函数结果,那么它的值是未定义的。它可能是 False (0)、True (1) 或其他整数值。 您可以像查看局部变量一样查看函数返回变量,当然需要在使用前对其进行初始化。 故事的寓意?始终初始化您的函数返回值。 【讨论】: 是的,这是你的运气。您的函数实际上只是返回 EAX 寄存器的当前内容。无论您调用该函数之前的任何代码,显然都将其设置为零。 等等——你是说这个函数编译成的不是简单的ret?调用者肯定会从 EAX 读取结果。为什么函数会使用 EBX 做任何事情,EBX 是一个在进入函数时完全没有意义的寄存器? @LU RD 不,那不是真的。只有托管类型被初始化。指针、布尔值、整数、浮点类型等,值类型都不是。如果你认为值类型的局部变量已经被初始化,那么你就有麻烦了。 @LU 事实上,编译器警告你使用了未初始化的局部变量,这是为了什么! 注意:托管类型的结果必须也被初始化(字符串、接口等)!即使编译器没有发出警告:qc.embarcadero.com/wc/qcmain.aspx?d=894(Jordan Russell 在 5/16/2002 7:21:10 PM)