![]() |
Integer mit Wert "1243032" initialisiert
Hey, folgender Code multipliziert zwei Integer.
Ich weiß, dass das auch einfacher geht, aber der Code soll später in Assembler umgesetzt werden. Die Funktionsweise hat nichts mit meinem Problem zu tun: Das showmessage in Zeile 3 gibt mir immer "1243032" aus. In anbetracht der Tatsache, dass Integer normalerweise mit "0" initialisiert werden, hat mich das sehr verwundert und ich habe ewig gebraucht darauf zu kommen, dass ich h2 erst auf "0" setzen muss. Warum hat h2 nicht von Beginn an den Wert "0"?
Delphi-Quellcode:
function multi(w1,w2:integer):integer;
var h1, h2:integer; begin showmessage(inttostr(h2)); h2:=0; repeat h1:= w1 mod 2; if h1 <> 0 then begin h2:=h2+w2; dec(w1); end else begin w1:=w1 div 2; w2:=w2 * 2; end; until w1=1; result:=w2+h2; end; procedure TForm1.buttonclick(Sender: TObject); begin edit3.text:=inttostr(multi(strtoint(edit1.text),strtoint(edit2.text))); end; |
Re: Integer mit Wert "1243032" initialisiert
Variablen auf dem Stack wurden noch nie initialisiert (solange du nicht Delphi.Net verwendest).
|
Re: Integer mit Wert "1243032" initialisiert
Oder anderst gesagt: Lokale variablen werden nie initialisiert.
|
Re: Integer mit Wert "1243032" initialisiert
Zitat:
Edit: Zitat:
|
Re: Integer mit Wert "1243032" initialisiert
Lokale Variablen werden auf dem Stack abgelegt.
Nein warum sollten sie? da steht das drinne, was zufällig an dieser Stelle im Speicher steht. Aber du hättest schon viel früher draufkommen sollen, da dir der Compiler eine entsprechende Warnung ausgeben haben sollte. |
Re: Integer mit Wert "1243032" initialisiert
Moin An00bis,
Zitat:
Der Stack ist ein Speicherbereich, der u.a., die Werte der lokalen Variablen enthält. Dir wird immer der Wert angezeigt, der sich an der Stelle befindet, die als Speicher für die lokale Variable verwendet wird. |
Re: Integer mit Wert "1243032" initialisiert
Zitat:
Ich wundere mich gerade, dass überhaupt irgendeine Funktion von mir funktioniert. Danke für die Informationen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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