In C, von was ich verstehe, werden Primitive wie Ints und Floats auf 0 initialisiert, wenn sie zuerst deklariert werden. Dasselbe gilt, wenn eine Struktur deklariert wird, die Primitive enthält. Ich habe Probleme, einen einfachen Weg zu finden, um zu überprüfen, ob Primitive nicht initialisiert sind oder nicht.Einfache Möglichkeit zu prüfen, ob Primitive nicht initialisiert ist?
Angenommen, ich habe eine Instanzvariable vom Typ int in einer Headerdatei deklariert. Ich muss diese Variable in meinem Implementierungscode verwenden, und es ist wichtig für mich zu wissen, ob dieser Wert initialisiert wurde oder nicht. Die Überprüfung gegen Null ist nicht wirklich eine Option, denn wenn dieser Wert wirklich Null sein soll, habe ich einen Wert, der bereits geändert wurde, reinitialisiert. Die Überprüfung gegen NULL funktioniert auch nicht, weil es kein Zeiger ist.
Die einzige Lösung, die ich gefunden habe, initialisiert die Variable im ersten Teil des ausführbaren Codes auf einen Wert, von dem ich weiß, dass er nie für den Rest des Programms relevant sein wird. Wenn der Wert beispielsweise nie unter Null liegt, initialisiere ich ihn auf -1, um zu wissen, dass er noch nicht initialisiert wurde. Dies scheint jedoch sehr umständlich zu sein und kann zu Problemen führen, wenn sich der Wertebereich ändert, dem die Variable zugewiesen werden kann.
Irgendwelche interessanten Vorschläge für diese Art von Problem? Danke im Voraus!
eine nicht initialisierte Variable ist eine UB. Wenn Sie den Schalter -Wall (gcc) übergeben, können Sie jede nicht initialisierte Variable verfolgen. Der gcc meldet etwas wie folgt: 'ddd.c: 8: warning: 'i' wird in dieser Funktion nicht initialisiert ' –