函数的结果是否始终初始化?

pop*_*p32 3 delphi types

可能重复:
Delphi中Result的默认值是什么

此问题类似,我现在问以下问题.

function Test:Boolean;
begin end;
Run Code Online (Sandbox Code Playgroud)

结果值是否总是保证为假(0)?整数值不是,布尔值也是如此?

Dav*_*nan 6

不,如果您没有初始化值类型函数结果,那么它的值是未定义的.它可以是False(0),True(1),或者实际上是某个其他整数值.

您可以在与本地变量相同的视图中查看函数返回变量,当然需要在使用前对其进行初始化.

故事的寓意?始终初始化函数返回值.

  • 是的,这是你的运气.您的函数实际上只返回EAX寄存器的当前内容.无论您在调用该函数之前的代码是什么,显然都会将其设置为零. (2认同)
  • @LU RD不,这不是真的.仅初始化托管类型.指针,布尔,整数,浮点类型等,值类型不是.如果您认为值类型局部变量已初始化,那么您就遇到了麻烦. (2认同)