W1024 Combinaison 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 combiner mathématiquement 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, puis d'effectuer la combinaison.

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

Le compilateur émettra cet avertissement uniquement si la taille est agrandie au-delà de ce qui serait normalement utilisé pour calculer le résultat.


{$APPTYPE CONSOLE}
program Produce;
  var
    i: Integer;
    c: Cardinal;

begin
  i := -128;
  c := 130;
  Writeln(i + c);
end.


Dans l'exemple ci-dessus, le compilateur prévient que l'expression sera calculée sur 64 bits et non sur les 32 bits supposés.