W1023 Comparaison de types signés et non signés - opérandes agrandis (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Pour comparer correctement des types signés et non signés, le compilateur doit faire évoluer les deux opérandes vers le type de données de taille supérieure le plus proche.

Pour comprendre pourquoi cela est nécessaire, considérez deux opérandes, un Shortint ayant la valeur -128 et un Byte ayant la valeur 130. Le type Byte contient un chiffre de précision de plus que le type Shortint : comparer les deux valeurs ne peut donc pas se faire correctement sur 8 bits. La solution consiste à faire évoluer les deux types vers un type commun plus grand, puis d'effectuer la combinaison.


program Produce;
  var
    s: shortint;
    b: byte;

begin
  s := -128;
  b := 130;

  assert(b < s);
end.