Step 7 Unterschied temp und static

siegener19

Level-2
Beiträge
255
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

aus der Theorie ist bekannt: temp speichert für einen Zyklus, static für mehrere. Trotzdem ist mir irgedendwie nicht klar, wann ich eine temp- und wann eine static variable nehmen soll. Für mich irgendwie gleich.

Kann mir jemand bitte an einem Beispiel diese Frage beantworten?


Gruß
 
Wenn du etwas mehr als nur im Moment dir merken musst / willst, dann static.
Wenn nur kurz solange das aktuell ist und zum verrechnen im selben Moment temp.
Okay?
So verstehe ich die verschiedenen Variablen.


bike
 
Wenn du etwas mehr als nur im Moment dir merken musst / willst, dann static.
Wenn nur kurz solange das aktuell ist und zum verrechnen im selben Moment temp.
Wie wird denn der "Moment" definiert?
:confused: ;)


Wird der Wert der Variablen im Zyklus erst zugewiesen und dann nur noch im gleichen Zyklus verwendet, ist temp möglich.
Wird der Wert der Variablen über den Zyklus hinaus benötigt, z.B. zuerst den Wert des letzten Zyklus lesen und dann erst einen neuen zuweisen, muss die Variable statisch sein.

Boolsche Variablen, die ihren Zustand über SETZEN/RÜCKSETZEN bekommen, müssen statisch sein.

Im Zweifelsfall lieber statisch wählen, dann ist man auf der sicheren Seite.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Boolsche Variablen, die ihren Zustand über SETZEN/RÜCKSETZEN bekommen, müssen statisch sein.

Müssen nicht! Es ist einfach sicherzustellen das mindestens ein S oder R vor dem ersten Lesezugriff stattfindet.

Ich mach das öfter so
Code:
SET
R #tempvar

u #freigabe 
u #automatik
S #tempvar

U #brand
o #fingerimweg
R #tempvar

als kleines beispiel. So wird sie immer beschrieben und kann daher temp sein. NAtürlich könnte man das zusammenfassen und per = zuweisen. Aber manchmal ist es schöner wenn man Verknüpfungen Logisch gruppiert.

mfG rené
 
Hallo,

aus der Theorie ist bekannt: temp speichert für einen Zyklus, static für mehrere. Trotzdem ist mir irgedendwie nicht klar, wann ich eine temp- und wann eine static variable nehmen soll. Für mich irgendwie gleich.

Kann mir jemand bitte an einem Beispiel diese Frage beantworten?


Gruß

Temp nimmst du für Variablen, die du in einem Baustein für Zwischenergebnisse brauchst, also maximal bis zum Bausteinende, denn nach dem Bausteinende wird der Speicherplatz wieder freigegeben und für Temp Variablen anderer Bausteine verwendet.
Temp Variablen speichern also nicht für einen Zyklus, sondern nur für die Laufzeit eines Bausteins.

Static nimmst du für Variablen, deren Wert du über die Laufzeit eines Bausteins hinaus speichern willst. Beispiele hierfür sind Zähler, Timer, Zustände von Zustandsautomaten.

Die gemeinsame Eigenschaft von beiden ist, dass sie lokal sind, also nur dem Baustein bekannt, in dem sie definiert sind.
 
Müssen nicht! Es ist einfach sicherzustellen das mindestens ein S oder R vor dem ersten Lesezugriff stattfindet.
Ja, die berühmten Ausnahmen.

Ich hab' überlegt, ob ich's mit dazu schreibe.
Hielt es dann aber doch für besser, es so drastisch auszudrücken.
;)




also maximal bis zum Bausteinende
Stimmt natürlich.

Es gibt ja auch Bausteine, die man mehrmals im Zyklus aufruft. Da kann man bei Temps auch im gleichen Zyklus nicht mehr auf die Werte eines vorigen Aufrufs zurück greifen.


Sorry, das mich da nicht ganz korrekt ausgedrückt habe.
Ich bin einfach davon ausgegangen, das jeder Bausteinaufruf (Instanz) im Zyklus einmalig ist (auch wenn es der gleiche Baustein ist) und daher diese Baustein-Variablen im weiteren Zyklus gar nicht mehr vorkommen, um darauf zugreifen zu können.
 
:!:
Vorsicht bei Verwendung von 'S' od. 'R' bei temp-Variablen.
Wenn eine Bedingung für 'S' od. 'R' nicht erfüllt ist, behält die temp-Variable ihren zufälligen Wert
vom Bausteinaufruf. Es sei denn, die Temp-Variable wurde vorher gesetzt - z.B. über IN/OUT Variable.

Gruß Kalle
 
Zurück
Oben