Avatar von George99
  • George99

mehr als 1000 Beiträge seit 10.10.2005

Re: Mag ja sein. Dennoch sind nicht initialisierte Variablen ein Fallstrick!

Lars Rohwedder schrieb am 19.03.2017 22:01:

Der Code, um den es da ging, ist C++ und nicht K&R C. Somit kann man lokale Variablen dann deklarieren, wenn es nötig ist und wenn man ihnen auch einen Startwert zuweisen kann (oft ist es auch der Endwert, sprich: Die Variable kann auch gleich const gemacht werden).

Und auch wenn C-Programmierer es bevorzugen, am Anfang einer Funktion ein ganzes Rudel lokaler Variablen zu definieren, die man erst viel später braucht, so ist es nicht verkehrt, sie auch zu initialisieren, mit einem Sentinel-Wert, der dann später deutlich zeigt: Hier wurde eine Variable nicht wie erwartet mit einem sinnvollen Wert belegt -> Klar erkennbarer Fehlerfall, den man dann geeignet behandeln kann.

Also was du zur Deklaration von lokalen Variablen in C schreibst, bezieht sich noch auf das alte C89, seit C99 gelten in C dieselben Freiheiten wie in C++ also z.B. "for (int i=0; i<10; i++)" und das gibt es nun schon seit fast 20 Jahren...

Zum Debuggen ist die Methode, eine lokale Variable mit einem ins Auge springenden Fehlerwert zu initialisieren, natürlich sinnvoll, so was wie int n=0xBADCODE, aber im fertigen Code ist das für den nächsten, der sich den Code ansieht, doch eher verwirrend, der geht ja davon aus, dass dieser fehlerfrei läuft...

Bewerten
- +
Anzeige