Sollten alle Variablen einen Anfangswert bekommen?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich bin der Meinung das sagte du oder jemand anders mal das man keine Variablen initialisiern müsste. Oder habe ich was falsch verstanden ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ne also wenn du einen Wert vorraussetzt in einer Variable musst du die auch initialisieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja das ist mir schon inzwischen klar geworden, wenn ich in Int wert auf -1 prüfen möchte muss er auch -1 irgendwann bekommen.

Weil int werte werde ja immer mit den höchstmöglichen wert belegt,
Wobei ich mich frage warum ? sie könnten doch gleich mit -1 belegt werden.

Bei Boolean werten weiß ich das sie mit False belegt werden, aber ich habe das gefühl auch nicht immer ! Normalerweise können sie ja nur 2 werte annehmen, manchmal denke ich wirklich sie haben noch einen Dritten wert....
MFG
Michael Springwald

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Pascal initialisiert gar keine Variablen von selbst.

Das stimmt so für Delphi (und FP) eindeutig nicht. Diverse werden mit 0, NIL, Leerstring o.ä vorbelegt (siehe oben). Natürlich keine auf dem Stack angelegten (lokalen Unterprogramm-) Variablen.

-Michael

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

mit nil werden keine angelegt, das weiß ich zufällig ganz sicher.
z.b. bei Klassen die muss man auf nil manuell setzten !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto, hör auf mit ganz sicher das was mschnell da sagt gilt auch nur für Globale Variablen und die gibts auch in Pascal kaum noch. Ich hab das noch nie getestet bin aber davon ausgegangen.

OK, wieder was dazugelernt Globale Variablen werden initialisiert.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ach so ist das ! das heißt also Locale nicht... wo das Praktischer währe.

z.b. int gleich mit -1..... oder so....
ich nutze sie noch in meinem Aktuellen Projekt.....
MFG
Michael Springwald

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:mschnell da sagt gilt auch nur für Globale Variablen


Nö, das gilt (AFAIK) auch für Variablen, die in der Typdefinition einer Klasse angegeben werden (die also bei create automatisch auf dem Heap angelegt werden. Der Heap-Bereich wird also einfach mit 0 initialisiert).

Und die gib'ts oft :)

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

pluto hat geschrieben:ach so ist das ! das heißt also Locale nicht...


Nee lokale ganz bestimmt nicht (wie bereits mehrfach erwähnt).

pluto hat geschrieben:wo das Praktischer wäre.


lokale variablen anlegen wird m Programm-Ablauf sehr oft gemnacht, cdeshalb würde es unverhältnismäßig viel Rechenzeit kosten.

-Michael

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

pluto hat folgendes geschrieben:
ach so ist das ! das heißt also Locale nicht...


Nee lokale ganz bestimmt nicht (wie bereits mehrfach erwähnt).


Nicht für ungut, aber das habe ich schon da hin geschrieben: Das Heißt also Locale nicht
rate mal warum das nicht da steht.
MFG
Michael Springwald

Antworten