- 75 名前:68 mailto:sage [2012/02/02(木) 13:24:05.22 ]
- >> 70
はい、あります。Integerですよね。IntToHex自体はaの中身を表示する処理ですが、 それはあくまで、その時点でaにセットされている内容を表示する処理ですよね。 したがってaの中身が$8000000000000000であればそれが表示されるでしょう。 私が思うのは、その前のshlの段階。 shlは符号に無関係な"論理左シフト"である以上、1 shl 63は$8000000000000000と セットされるべきで、ここに符号ありチェックが入るのは、おかしいのではないか? という趣旨です。 参考までに、下記のようなコードでもやはり同様の現象が起きます。 var a : UInt64; begin a := 1; a := a shl 63; pcardinal( pbyte( @a ) + 4 )^ := $f; // とりあえずaを使用するためのダミー処理
|

|