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

标签 delphi operators delphi-2007 variant

当将 varEmpty Variant 变量与零评估 变量进行比较时,为什么 = 运算符结果为 True >varInteger Variant 变量?

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。因此表达式返回 true。

关于delphi - 为什么将 varEmpty 与零评估的 varInteger 进行比较时 "="运算符结果为 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53946069/

相关文章:

delphi - "Object Aware"图形用户界面控件

德尔福XE2 : Possible to instantiate a FireMonkey Form in VCL application?

android - Kotlin Elvis Operator 在 JsonElement 上失败?

php - “=”和 “=&”在赋值变量时有什么区别?

windows - 无论用户设置如何,如何创建没有任何框架的窗口?

Delphi:如何检查是否按下了任何鼠标按钮 - 在鼠标事件之外?

Delphi工具栏上单元 View 和窗体 View 之间切换的按钮消失了?

delphi - IExplorer.exe 的 ShellExecute 路径

java - &、|、^ 是按位运算符还是逻辑运算符?

delphi - Delphi 项目的 RELEASE 的 MSBuild 仍然设置 D+ 选项