cout wird nicht ausgegeben



  • Hallo,

    mir fällt in letzter Zeit häufig auf, dass meine Programme nicht starten. Selbst wenn ich ein ganz normales Programm schreibe mit einer Initialisierung, dann cout statement "Geben Sie eine Zahl ein" und dann cin mit der Initialisierung, wird mein cout Satz nicht ausgegeben, obwohl mir keine Fehler angezeigt werden. An was kann das liegen? Benutze eclipse….



  • Beispielcode?



  • der rest vom programm kann falsch sein. es geht wirklich nur darum, warum mir mein cout satz nicht ausgegeben wird…

    #include <iostream>
    using namespace std;

    int main () {
    int max;
    int i;
    int j;
    int Matrix [i][j];
    cout << "Wieviele Gleichungen möchten Sie eingeben? " << endl;
    cin >> max;
    for(int i=0; i<max ; i++){
    for(int j = 0; j<max+1; j++){
    cin >> Matrix[i][j];
    }
    }
    cout << '\n' << "Matrix " << endl;
    for(int i=0; i<max; i++){
    for(int j=0; j<max+1; j++){
    cout << Matrix[i][j] << '\t';
    }
    cout << '\n' << endl;
    }
    return 0;
    }



  • int i; 
    int j; 
    int Matrix [i][j];
    

    Was haste dir denn dabei gedacht?



  • ok das war nicht so schlau. habe es geändert und max in die eckigen Klammern geschrieben. bin absoluter anfänger. aber wenn mein programm nicht einmal das cout statement ausgibt, kann ich auch nicht sehen wo eventuelle fehler liegen. hat diese initialisierung denn auswirkungen auf das cout? wieso macht das programm denn nichts? oder wieso werden mir keine fehler angezeigt? wenigstens der satz müsste doch ausgegeben werden oder?!



  • Andere Frage: Wie groß, denkst du, wird das Array sein?
    Denn das wird vermutlich Schuld daran sein, dass du nichts siehst.



  • Sarah511 schrieb:

    aber wenn mein programm nicht einmal das cout statement ausgibt, kann ich auch nicht sehen wo eventuelle fehler liegen.

    Tja, das ist hart, aber so ist C++ nunmal. Du merkst auch erst, dass du das Skalpell falschrum hältst, wenn dir die Finger abfallen. C++ ist heutzutage eine der wenigen Sprachen, bei denen viele Fehler lediglich "undefiniertes Verhalten" hervorrufen statt sofort klare Fehlermeldungen zu produzieren. Das liegt daran, dass der Compiler zur Erkennung dieser Fehler zusätzlichen Code einfügen müsste, der Speicherplatz und Laufzeit kostet, aber im Normalfall nicht gebraucht wird.

    Das ist jetzt allgemein gesprochen. Dein konkreter Fehler wäre schon vom Compiler zu erkennen, weil du uninitialisierte Variablen benutzt. Das ist allerdings nur eine Warnung, die möglicherweise auch deaktiviert ist.

    hat diese initialisierung denn auswirkungen auf das cout?

    Strenggenommen ist diese Initialisierung so oder so nicht erlaubt; Arraygrößen müssen Konstanten sein. Du benutzt anscheinend einen Compiler, der als Erweiterung des Standards Arrays mit variablen Dimensionen unterstützt. Soweit so gut.

    Wenn wir das mal ignorieren, dann erzeugt dein Programm undefiniertes Verhalten. Davon ist theoretisch das ganze Programm betroffen, nicht nur das cout. Auch bei naiver Betrachtungsweise gibt es allerdings keinen Grund, zu vermuten, dass es nach dem Ausführen einer fehlerhaften Anweisung, dem Erzeugen des Arrays, ohne Probleme weitergeht.

    wieso macht das programm denn nichts?

    Es sollte eigentlich sofort abstürzen.

    oder wieso werden mir keine fehler angezeigt?

    Sollten eigentlich. Sowas wie "Programm wurde durch SIGSEGV beendet." oder dergleichen.


Log in to reply