Sonderbar



  • #include <iostream>
    #include <stdlib.h>
    #include <string>

    using namespace std;

    int main(int argc, char *argv[])
    {

    string eins[11] = {"s","c","h","o","l","s","e","g","e","n","s"};
    cout<<eins[1,2,3,4,5,6,7,8,9,10,11]<<endl;
    system("PAUSE");
    return 0;
    }

    Ich habe das mal in bloodshed compiliert die ausgabe war ämm ja was soll ich dazu sagen
    wenn es sich tatsächlich reproduzieren lässt kann man mir ja vieleicht mal erklären wie soetwas zustandekommt
    danke i.V.
    Max

    ///////////////
    //ADVERSITEMENT
    ///////////////
    http://www.chaos-piraten.de



  • Hmm wenn man es ne weile laufen lässt stürzt es ab
    aber davor kommen krasse Muster
    sucher ist das allen schonmal "passiert" und ich stehe jetz voll doof da aber egal



  • nerdomat schrieb:

    Ich habe das mal in bloodshed compiliert die ausgabe war ämm ja was soll ich dazu sagen
    wenn es sich tatsächlich reproduzieren lässt kann man mir ja vieleicht mal erklären wie soetwas zustandekommt
    danke i.V.

    Meine Kristallkugel sagt du kriegst Zeichensalat? Nun da ist nichts sonderbares dran.

    Zuerst der Ausdrukc in den eckigen Klammern:
    1,2,3,4,5,6,7,8,9,10,11

    Der Standard sagt,d ass beim Komma von links nach rechts abgearbeitet wird, das letzte Ergebnis wird also festgehalten. Das wäre hier 11. Dann löst das ganze weiter auf zu
    cout << eins[11] << endl;

    Dummerweise hat dein Array eins aber nur 11 Elemente mit den nummern 0 bis 10. Ergo greifst du auf den Speicher dahinter auf, was zu Speicherwustausgabe führt.



  • #include <iostream>
    #include <stdlib.h>
    #include <string>

    using namespace std;

    int main(int argc, char *argv[])
    {

    string eins[2];
    cout<<eins[2]<<endl;
    system("PAUSE");
    return 0;
    }

    Und was siehst du hier?



  • gleicher Fehler wieder



  • string eins[2];

    Da existieren nur 2
    eins[0]
    eins[1]


Anmelden zum Antworten