D a v i d K. schrieb:
> Trotzdem wüsste ich gerne ob dann mit diesem Zufallswert gerechnet wird.
Es sind keine Zufallswerte in dem Sinne, dass du damit rechnen kannst,
dass sie statistische EIgenschaften von Zufallszahlen haben.
> Und woher kommt dieser?
Der Speicher, an dem diese Variablen beim Betreten der Funktion erzeugt
werden, existiert ja unabhängig von den Variablen auch vorher schon. Die
Speicherzellen kristallisieren ja nicht aus der Luft heraus um dann
Variablenwerte aufzunehmen. Was auch immer dieser Speicher für einen
Inhalt hat, eine uninitialisierte Variable 'erbt' ihn. Die Bits sind nun
mal entweder 0 oder 1.
Und ja. In deinem Programm ist es gar nicht so unwahrscheinlich, dass
die Variablen r und g beim erneuten Betreten der Funktion wieder an der
gleichen Stelle im Speicher erzeugt werden, an der sie auch lagen, als
die Funktion das letzte mal lief. Da in deinem main() dazwischen nichts
passiert ist, 'erben' sie damit ihre letzten Werte wieder. Aber: Das ist
nichts womit du rechnen kannst. Machst du im main() etwas, rufst du dort
andere Funktionen auf, dann wird genau dieser Speicher unter Umständen
in dieser Funktion für andere Variablen verwendet und damit hat dieser
Speicher dann andere Inhalte beim erneuten Aufruf deiner Funktion.
> Also angenommen ich möchte einen Zufallswert dort haben, erhalte ich
> dann mit jedem Aufruf einen neuen, oder ist dieser dann sozusagen
> konstannt seit dem Zeitpunkt an dem es compiliert/geflasht wurde?
Vergiss den Begriff 'Zufall' hier gleich wieder.
Das hat nichts mit Zufallszahlen zu tun.
Es ist eher so, wie wenn du in eine neue Wohnung einziehst und das
Postkästchen erbst. Was immer der Vormieter dir da drinn hinterlassen
hat, findet sich darin, wenn du es zum ersten mal öffnest. Aber das ist
nichts, womit du fix rechnen kannst. Uninitialsiert ist uninitialisiert.
Irgendein Wert, von dem nicht festgelegt ist, wie er entsteht.