W1024 符号付型と符号なし型の演算により,オペランドが拡張されました (Delphi)

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

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

符号付き型と符号なし型との間で演算を行う場合,コンパイラはまず両方のオペランドを一回り大きなサイズのデータ型にしてから演算を行わなければなりません。

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

この警告は,結果の計算に通常使用する範囲を超えたサイズが使用された場合に出力されます。


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

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


{ この例では,変数の型による 32 ビット演算のかわりに 64 ビット演算が行われる }