为什么"="运算符结果在将varEmpty与零评估的varInteger进行比较时为True?

Fab*_*zio 1 delphi operators variant delphi-2007

为什么=运算符True在将varEmpty Variant变量与零评估varInteger Variant变量进行比较时会产生结果?

var
  V1 : Variant;
  V2 : Variant;
begin
  V2 := 0;
  if(V1 = V2)
  then ShowMessage('V1 = V2')
  else ShowMessage('V1 <> V2');
end;
Run Code Online (Sandbox Code Playgroud)

此代码生成以下输出:

V1 = V2

相等运算符是否=仅检查Variant变量的值部分?

Ser*_*yuz 8

为了进行比较,将空变量转换为整数.根据变体类型转换规则,未分配(空)变量将转换为0.因此表达式返回true.