komplexvariablen oder einzelne?



  • Okay, hat sich jetzt alles geklärt oder hast du immer noch ein Problem damit das zu verstehen? :o



  • Original erstellt von SirNoname:
    **
    bei "zahl[2]" meint er "Undefiniertes Verhalten", was ich auch beobachtet habe (bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe).**

    undefiniertes verhalten heisst nicht das es nicht funktioniert aber wenn es das tut isses zufall. anstatt der 5. oder 6. könnte der fehler auch bei der 10000. auftreten



  • na bitte ... das wollt ich wissen! thx @ japro! ^^ ich will das ja nich ins extrem treiben aber wozu is das dann nütze wenn`s im endefekt eh bloss aufm zufallsprinzip beruht?! ich mein das kann doch nich so nach dem motto "jaja ... versuch`s einfach" funktionieren ....



  • Wie wärs mit Gehirn anschalten, das ist ja nicht mehr feierlich was du hier ablieferst. Es ist EIN FEHLER, auf ein Arrayelement zuzugreifen, was AUSSERHALB des Arrays liegt.



  • es ist nicht nach dem zufallsprinzip solang du nur auf elemente zugreiffst die innerhalb der angegebnenen grösse sind iss alles in ordnung und es is klar was passiert... nur wenn du auf elemente ausserhalb des bereiches zugrieffst ist ist das verhalten undefiniert.



  • Original erstellt von SirNoname:
    na bitte ... das wollt ich wissen! thx @ japro! ^^ ich will das ja nich ins extrem treiben aber wozu is das dann nütze wenn`s im endefekt eh bloss aufm zufallsprinzip beruht?! ich mein das kann doch nich so nach dem motto "jaja ... versuch`s einfach" funktionieren ....

    ich zitiere mich einmal und hebe ein bisschen hervor:

    int array[2] legt ein array von 2 (zwei) elementen an. was auch sonst?
    array[0] - ist das erste element
    array[1] - ist das zweite element
    array[2] - ist das dritte element

    was passiert wenn du einen leiter die 20 stufen hat bis zur 30. stufe raufkletterst?

    du fällst runter. warum sollte es bei der programmierung anders sein. ein array mit 2 elemnten kann kein 3. beinhalten.



  • ich will euch ja nicht zu nahe treten aber ich denke soviel ahnung hab ich dann doch dass ich nicht "die 30te stufe" auf einer "20er leiter" erklimme. ich hab den bereich des arrays sogar zu testzwecken um einiges grösser gemacht als benötigt, nur is der fehler dann trotzdem noch aufgetreten.
    und das mit meinem "(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.
    kurz: ich leg ein array an, initialisiere JEDES element (ja, auch "array[0]"!), will einfach nur die anfangsinitialisierung abrufen ABER ES KLAPPT NICHT, da nur unsinn dabei herauskommt.
    naja ... is ja jetz auch egal, jedenfalls habt ihr mir im großen und ganzen doch geholfen. das problem werd ich denk ich nich mehr haben, da ich in dem stress n andren lösungsweg gefunden hab. und das mit dem fehler: ich hab gelernt, dass computer manchmal sachen machen, die sich jeglicher logik wiedersetzen. (oder: "der fehler liegt gar nich da, wo man ihn vermutet")



  • Original erstellt von SirNoname:
    ich will euch ja nicht zu nahe treten aber ich denke soviel ahnung hab ich dann doch dass ich nicht "die 30te stufe" auf einer "20er leiter" erklimme. ich hab den bereich des arrays sogar zu testzwecken um einiges grösser gemacht als benötigt, nur is der fehler dann trotzdem noch aufgetreten.
    und das mit meinem "(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.
    kurz: ich leg ein array an, initialisiere JEDES element (ja, auch "array[0]"!), will einfach nur die anfangsinitialisierung abrufen ABER ES KLAPPT NICHT, da nur unsinn dabei herauskommt.

    dann gib n beispiel wo zB

    int array[5];
    array[3]=1;
    abstürzt



  • wie gesagt, ich weiss nich genau, wo der fehler lag. is mir im moment auch recht egal, da ich das prob anders löse. vielleicht hab ich ja auch irgendwas dummes anderes falsch gemacht (wär nich das erste mal) ... ka.
    trotzdem nochmals danke für eure hilfe und die vielen beiträge 🙂

    [ Dieser Beitrag wurde am 11.02.2003 um 12:08 Uhr von SirNoname editiert. ]



  • Original erstellt von SirNoname:
    [QB]"(bei mir war es aber nicht die 2te, sondern die 5. oder 6. zahl in der reihe)" war nicht auf DIESE reihe bezogen, sondern auf ein array mit entsprechender elementanzahl.

    Falls du mit entsprechend das meinst, was ich glaube:

    int array[2]; 
    array[2] = 234;
    

    Das ist falsch.
    Du kannst nicht auf array[2] zugreifen, weil das ein ganz anderer Speicherbereich ist.

    Poste doch mal den Quelltext, wo der Fehler drin ist.
    Ich will auf Fehlersuche gehen 🕶



  • *japro schwenkt die weisse fahne*



  • int zahl[2];
    zahl[0] = 23;
    zahl[1] = 12345;
    zahl[2] = 123456; /* Undefiniertes Verhalten */

    TYPISCH Bug Programmierer! sorry 😃

    Wenn man ein Array mit 2 Elementen anlegt, darf man auch nur auf diese 2 zugreifen. Sollte was anderes theoretisch passieren können, muss man selber dafür sorgen, dass dies eben nicht passiert. Sonst kann's sein, dass es irgendwann kracht. Warum? Weil ausserhalb des definierten Bereichs auch noch andere Variablen existieren, die dann überschrieben werden, zB Zeiger.



  • ^^ ja ... ich weiss dass das mit dem "array[2]=irgendwas" aus "int array[2]" nich geht ... is mir alles klar jetzt (dank eurer hilfe ^^). wie gesagt, ich habs jetzt anders gemacht (vom programmaufbau her mein ich), is jetz viel einfacher und kommt ohne array aus. den code kann ich deshalb hier auch nich posten, sorry @ Gary (aber ich könnt wetten wich mach noch mehr solche dummen fehler, daran solls nich mangeln *gggg*)

    thx nochmal und guten code!


Anmelden zum Antworten