W1023 符号付型と符号なし型の比較のため,オペランドが拡張されました (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

符号付き型と符号なし型を正しく比較するためには,コンパイラは両方のオペランドを一回り大きなサイズのデータ型にしなければなりません。

この操作が必要な理由を理解するために,値 -128 を持つ Shortint と値 130 を持つ Byte の 2 つのオペランドを考えてみます。Byte 型は Shortint 型よりも 1 桁多い精度を持ちます。したがって,8 ビットの範囲ではこの 2 つの値を正確に比較することはできません。これに対する解決方法は,この 2 つの型を一回り大きな共通のサイズにしてから比較を行うことです。


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

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

  assert(b < s);
end.