将 varEmpty 与零值 varInteger 进行比较时,为什么“=”运算符结果为真?
Why "=" operator results True when comparing varEmpty with a zero evalued varInteger?
为什么将 varEmpty
Variant
变量与零值 varInteger
Variant
变量进行比较时,=
运算符的结果是 True
?
var
V1 : Variant;
V2 : Variant;
begin
V2 := 0;
if(V1 = V2)
then ShowMessage('V1 = V2')
else ShowMessage('V1 <> V2');
end;
此代码产生以下输出:
V1 = V2
相等运算符 =
是否只检查 Variant
变量的值部分?
为了进行比较,将空变量转换为整数。根据 variant type conversion rules,未分配(空)变体被转换为 0。因此表达式 returns 为真。
为什么将 varEmpty
Variant
变量与零值 varInteger
Variant
变量进行比较时,=
运算符的结果是 True
?
var
V1 : Variant;
V2 : Variant;
begin
V2 := 0;
if(V1 = V2)
then ShowMessage('V1 = V2')
else ShowMessage('V1 <> V2');
end;
此代码产生以下输出:
V1 = V2
相等运算符 =
是否只检查 Variant
变量的值部分?
为了进行比较,将空变量转换为整数。根据 variant type conversion rules,未分配(空)变体被转换为 0。因此表达式 returns 为真。