Problem in for-Schleife - nicht initialisierter int



  • Hallo!
    Ich programmiere in C++ mit Kdevelop.
    Ich habe eine einfache for-Schleife:

    for (int i; i < FlashData.size(); i++)
    

    Wenn ich in Kdevelop im Profil "default" kompiliere, funktioniert alles
    wunderbar.
    Es handelt sich um eine Libtool-Bibliothek.
    Kompiliere ich aber im Profil "debug", dann wird der Schleifeninhalt nie
    ausgeführt, weil i nicht mit 0 initialisiert wird. Im Stroustrup steht aber,
    dass deklarierte, uninitialisierte Integer automatisch mit 0 initialisiert
    werden.
    Ich habe im Projekt noch als Target ein einfaches Testprogramm, um die
    Funktion der Lib zu testen. Auch hier funktioniert die Initialisierung nicht.
    Warum funktioniert das im Debugmode nicht?



  • mase schrieb:

    Im Stroustrup steht aber,
    dass deklarierte, uninitialisierte Integer automatisch mit 0 initialisiert
    werden.

    Kaum. Das gilt nur für statische und globale Variablen. Lokale Variablen müssen initialisiert werden.



  • Im Stroustrup steht aber,
    dass deklarierte, uninitialisierte Integer automatisch mit 0 initialisiert
    werden.

    Lies das doch nochmal nach. Das wird kaum drin stehen. Ansonsten gibt bitte mal die Seite an.. (Könnte vlt. ein Übersetzungsfehler sein).



  • Da steht "in einem Namensbereich". Ich dachte, weil eine Klasse ja auch eine
    Art Namensbereich ist. Das Objekt der Klasse wird aber dynamisch angelegt.
    Deshalb wohl das undefinierte Verhalten.
    Dann war es wohl mehr oder weniger Zufall, dass die ints im Default-Profil
    mit 0 initialisiert wurden.



  • Vielleicht hast du auch in den Optionen die automatische Initialisierung primitiver Datentypen manipuliert...

    Wie auch immer, verlass dich nicht drauf, dass diese Variablen automatisch initialisert werden. Selbst falls dies so wäre und du würdest die Initialisierung trotzdem explizit aufschreiben, hättest du immer noch nichts verloren.



  • Zumal es in dem Fall nur zwei Zeichen sind, die dich von einer sicheren Initialisierung trennen....



  • It0101 schrieb:

    Zumal es in dem Fall nur zwei Zeichen sind, die dich von einer sicheren Initialisierung trennen....

    2 Zeichen hier, 2 Zeichen da - da kommt ganz schön was zusammen! 😉



  • unskilled schrieb:

    2 Zeichen hier, 2 Zeichen da - da kommt ganz schön was zusammen! 😉

    DurchdassparenvonZeichenhatniemandetwasgewonnen.Lesbarerwirdesdadurchjedenfallsnicht.


Anmelden zum Antworten