Negative Zahl in ein Unsigned Int schreiben



  • Hallo,

    ich habe einen Quelltext gesehen bei dem jemand, zur Betragsberechnung, ein unsigned Int genommen hat...

    das Programm lieft soweit, aber ich war doch sehr verwundert dass das Programm auch läuft wenn ich -100 einspeicehrn will und das Programm mir daraus dann für dei Berechnung 100 macht...

    Kann mir jemand was dazu sagen, ob das immer so ist oder ob es einfach nur Glück bei der Kompilerwahl war?

    DANKE


  • Mod

    Das ist kein Glück, sondern ein klarer Fehler. -100 in einen unsigned int gibt nicht 100, sondern UINT_MAX-99. Und UINT_MAX ist bestimmt nicht 199. Aber ich vermute mal eher, dass der Fehler bei dir liegt, so falsch macht das kein Compiler.



  • Bringst Du Code, kriegst Du Antwort. Poste doch mal die Zeilen, die Dich so verblüffen und wir lesen im Kaffeesatz, ob's ein Wunder oder ganz normal ist. Wegen der Existenz von Funktionen wie abs() würde ich mal vermuten, daß ein typecast eigentlich nichts machen darf.

    Aber bitte erstmal her mit der Zeile des Anstoßes ...



  • Den genauen Code habe ich nicht vor mir, sorry.

    ich hatte den Programmierer nur gefragt was er da gemacht hat und da hat er gemeint gehabt dass er damit den Betrag bekommt "das hab ich schon immer so gemacht und das läuft auch so"

    ich bin da sehr skeptisch geworden... er hat in eclipse gearbeitet, also wirds wohl der gcc gewesen sein, ich nutzt zZ nur den MS Compiler...

    Habs grad mal mit Dev C++ ausprobiert, da ists wohl auch so wie SeppJ das gesagt hat...

    Wie gesagt, ist nicht auf meinem Mist gewachsen 😉



  • Der gcc macht's auch so, wie SeppJ gesagt hat.


  • Mod

    Jeder Compiler macht das so. Er enthält uns etwas vor, von dem er gar nicht weiß, dass es wichtig ist.


Log in to reply