kostenloser Webspace werbefrei: lima-city


Integer-Overflow ermitteln

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    d**********e

    Das ist eine Frage, die bestimmt schon oft gestellt wurde aber ich hab bis jetzt noch keine zufriedenstellende Antwort gefunden.

    Wie bekomme ich heraus, dass der Zahlenbereich für Integer oder Long nicht mehr für das Ergebnis ausgereicht hat.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Du kannst überprüfen, ob das Ergebnis kleiner ist als eine der Ausgangszahlen, ist das der Fall, so war da wohl ein Overflow.
  4. Autor dieses Themas

    d**********e

    MMMHH... das funktioniert nur bei der Addition, die Multiplikation kann mehrmals rum wrappen. Dh auch wenn a*b > b und a*b > a kann es trotzdem sein, dass es nicht stimmt.
  5. Ich würde sonst folgendes vorschlagen:
    int a=ZAHL;
    int b=ZAHL;
    int c=ZAHL;
    
    c=a*b;
    if(c/a!=b)overflow();


    In C selber hat man leider keinen Zugriff auf die Overflow Flag. Aber falls du Assembler kannst, kannst du damit überprüfen, ob ein Ergebnis zu groß ist.
  6. Autor dieses Themas

    d**********e

    bladehunter schrieb:
    Ich würde sonst folgendes vorschlagen:
    int a=ZAHL;
    int b=ZAHL;
    int c=ZAHL;
    
    c=a*b;
    if(c/a!=b)overflow();
    leider kann ich nicht ausschließen, dass a ungleich Null ist, womit ich nochmal eine extra Abfrage hätte :mad: viel Aufwand.
    In C selber hat man leider keinen Zugriff auf die Overflow Flag. Aber falls du Assembler kannst, kannst du damit überprüfen, ob ein Ergebnis zu groß ist.
    das wäre die ideale Lösung, leider kann ich kein Assembler :frown: :frown:
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!