Почему оператор "=" возвращает True при сравнении varEmpty с varInteger с нулевым значением? - PullRequest
0 голосов
/ 27 декабря 2018

Почему оператор = выдает 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;

Этот код выдает следующеевывод:

V1 = V2

Оператор равенства = проверяет только часть значения Variant переменных?

1 Ответ

0 голосов
/ 27 декабря 2018

Для сравнения пустой вариант преобразуется в целое число.Согласно правилам преобразования типов неназначенный (пустой) вариант преобразуется в 0. Следовательно, выражение возвращает true.

...