为啥将 var Empty 与零值 var Integer 进行比较时,“=”运算符结果为真?
Posted
技术标签:
【中文标题】为啥将 var Empty 与零值 var Integer 进行比较时,“=”运算符结果为真?【英文标题】:Why "=" operator results True when comparing varEmpty with a zero evalued varInteger?为什么将 var Empty 与零值 var Integer 进行比较时,“=”运算符结果为真? 【发布时间】:2018-12-27 13:42:18 【问题描述】:当将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
变量的值部分?
【问题讨论】:
【参考方案1】:为了进行比较,将空变量转换为整数。根据variant type conversion rules,未分配的(空)变量被转换为0。因此表达式返回true。
【讨论】:
以上是关于为啥将 var Empty 与零值 var Integer 进行比较时,“=”运算符结果为真?的主要内容,如果未能解决你的问题,请参考以下文章
double类型与零值比较时不能用==和!=,但>=和<=可以吗?
php switch 为啥 bool TRUE 被判断为了 int 1,NULL 成了 string '',而 bool FALSE 正常?