![]() |
shl - Bug in Delphi?
Warum liefern diese zwei Bedingungen verschiedene Ergebnisse?
Delphi-Quellcode:
(1 shl 31) entspricht doch $80000000 oder sehe ich da was falsch? Mit (1 shl 30) und $40000000 und allen anderen < 31 geht es doch auch.
var
edx : DWORD; begin edx := $C1C3FBFF; if (edx and (1 shl 31) ) = (1 shl 31) then ShowMessage('shl: ja'); if (edx and $80000000 ) = $80000000 then ShowMessage('hex: ja'); end; |
Re: shl - Bug in Delphi?
Moin scp,
wenn Du es nicht ausdrücklich angibst, wird bei shl, wie bei fast allen anderen Operatoren, mit integer gearbeitet, also mit Vorzeichen. So geht's:
Code:
Ausserdem hast Du wohl die Warnungen vom Compiler überlesen ;-)
if (edx and [color=red]DWORD[/color](1 shl 31) ) = [color=red]DWORD[/color](1 shl 31) then
|
Re: shl - Bug in Delphi?
Doch so ein trivialer Fehler :-D Na dann belasse ich es bei dem $80000000, sieht eh besser aus.
|
Re: shl - Bug in Delphi?
Moin scp,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz