Eintauchen in das Rätsel nicht initialisierter Variablen: Warum seltsame Werte entstehen
Im Bereich der Codierung können nicht initialisierte Variablen verwirrende Ergebnisse hervorrufen. Ein solches Rätsel entsteht beim Versuch, solche Variablen zu drucken, was zu rätselhaften numerischen Ausgaben führt.
Um dieses Rätsel zu lösen, untersuchen wir den bereitgestellten C-Code:
int var; cout << var << endl;
Er deklariert eine ganzzahlige Variable var ohne Anfangswert. Beim Drucken von var wird eine beliebige Zahl wie 2514932 ausgegeben. Dies liegt daran, dass Variablen ohne Anfangswerte Mülldaten enthalten, die im Speicher gespeicherte Zufallsbits darstellen.
Ähnlicherweise tritt beim Drucken einer nicht initialisierten Doppelvariablen var ein ebenso unerwartetes Ereignis auf Es kann ein Wert wie 1,23769e-307 entstehen. Auch dies ergibt sich aus der Undefiniertheit seines ursprünglichen Inhalts.
Die Gefahren undefinierten Verhaltens
Das grundlegende Problem liegt im Konzept des „undefinierten Verhaltens“. In C verstößt der Zugriff auf nicht initialisierte Variablen gegen diese Regel, was unvorhersehbare Folgen hat. Der Compiler ist nicht verpflichtet, mit solchen Situationen elegant umzugehen und im Wesentlichen zu sagen: „Tu, was du willst; ich entbinde mich von jeglicher Verantwortung.“
Konsequenzen in der Praxis
Lassen Sie uns Veranschaulichen Sie dies anhand eines Beispiels aus der Praxis:
#include <iostream> const char* test() { bool b; // uninitialized switch (b) // undefined behavior! { case false: return "false"; // garbage was zero (zero is false) case true: return "true"; // garbage was non-zero (non-zero is true) default: return "impossible"; // options are exhausted, this must be impossible... } } int main() { std::cout << test() << std::endl; }
Intuitiv könnte man erwarten, dass der Funktionstest niemals „unmöglich“ zurückgibt, da beide Optionen für wahre und falsche Werte abgedeckt sind. Undefiniertes Verhalten kann jedoch das Unmögliche möglich machen. Das Kompilieren des Codes mit g -02 kann dieses Phänomen demonstrieren.
Schlussfolgerung
Um das unvorhersehbare Verhalten zu vermeiden, das mit nicht initialisierten Variablen verbunden ist, ist es unbedingt erforderlich, sie mit geeigneten Werten zu initialisieren . Diese einfache Vorgehensweise stellt sicher, dass Ihr Code nicht in den trüben Bereich undefinierten Verhaltens eintaucht und Ihre Programme weiterhin wie vorgesehen funktionieren.
Das obige ist der detaillierte Inhalt vonWarum drucken nicht initialisierte Variablen in C scheinbar zufällige Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!