在我的测试期间,以下情况始终会返回 True
var
  Tmp : Boolean;
begin
  if(Tmp)
  then ShowMessage('True')
  else ShowMessage('False');
end;
编译时,我收到以下警告消息:
[DCC警告] Unit1.pas(30):W1036变量“ Tmp”可能尚未初始化
检查未分配的局部Boolean变量是否总是返回True还是纯属偶然?
在我的测试应用中
if (Tmp) then
编译为
cmp byte ptr[ebp-$05],0
jz +$0c
因此,这是对栈中Tmp变量的内容是否为零的简单测试。
在测试堆栈位置上的值由堆栈的先前使用确定,因此从统计角度来看,很有可能不是零而不是零。因此,您的观察。