Variable auf Initialisierung prüfen



  • Habe gerade bisschen rumgedocktert hinsichtlich von uninitialisierten
    Variablen. Gibt es einen Befehl, mit dem man das prüfen kann?

    Bisher mache ich es so:

    if( Variable >= 0) ...

    Ist ja wohl nicht gerade eine tolle Lösung, oder?



  • *lol*
    Ich find´s genial. 🤡

    Aber bringt wohl nicht sonderlich viel,wenn der Datentyp vorzeichenlos ist 😉
    Am Besten deine Variablen immer in Zuge der Definition setzen, dann hast du keinen Ärger.

    int i = 0;
    int *p = NULL;
    
    //check
    if (p) ... //obwohl du es eigentlich wissen solltest
    


  • Naja, der Alkohol und die Müdigkeit. Da kann man schonmal auf orthotoxe Gedanken kommen, die einem ein Spiel von Verwirrung vorspielen und die Tatsachen der reellen Welt verspiegeln.
    Hab gedacht, es gäbe vielleicht einen Befehl wie isset(Variable) wie es ihn bei Php gibt. Aber trotzdem danke.



  • @Initialvergewisser, in C/C++ bedeutet uninitialisiert == undefiniert. Einer Variable wird immer eine freie Stelle Speicher und damit auf der jeweilige Wert in dieser Speicherstelle zugewiesen. Auf was willst du da prüfen?

    Daher gehört es zu einem guten (sauberen) Programmierstil jede Variable zu Begin zu initialisieren. Besonders gilt das für Zeiger.

    So etwas wie in PHP gibt es in C/C++ "leider" nicht.



  • Herrmann schrieb:

    So etwas wie in PHP gibt es in C/C++ "leider" nicht.

    Und ist in C/C++ auch vollkommen unnötig.



  • Man muss Variablen nicht sofort initialisieren, wenn es vom Programmverlauf her unnötig ist.

    Wenn man später im Programm nicht mehr weiß, ob eine Variable initialisiert ist oder nicht, liegt eindeutig ein logischer Fehler vor. Man sollte nicht die Symptome beheben, sondern eher den wirklichen Fehler suchen.



  • Dieser Thread wurde von Moderator/in cd9000 aus dem Forum WinAPI in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten