C Bereichsüberlauf herausfinden

xStram

Captain
Registriert
Juli 2008
Beiträge
3.756
Hallo ihr Lieben,

ich möchte die Werte für den Bereichsüberlauf von Datentypen testen. In der Theorie scheint alles klar:

short int -> Wertebereich: -2^15,...,0,...,((2^15)-1) = -32768 bis 32767
Eingegebener Wert: 34567

-> 1800 zu groß für den Wertebereich. Bis 32767 ist klar, danach wie auf der Uhr um 1800 Zahlen weitergehen. Dann lande ich bei der Zahl -30969.

Jetzt möchte ich das Ganze mit einem Mini-Programm testen:
Code:
#include <stdio.h>

int main()
{
    short int a;
    printf("Bitte a eingeben: ");
    scanf("%hi",&a);
    printf("%hi",&a);
    return 0;
}

Da kommt aber immer -178 als Ergebnis raus. Woran könnte das liegen? Ich kann mir das nicht erklären. Testen mit 5 oder 1 ergab auch immer den Wert -178.

Vielen Dank schonmal für eure Hilfe!
 
Dein zweites printf ist falsch - du zeigst die Adresse an, nicht den Wert von a...
 
...Ich bin doch echt zu ...

Danke, jetzt komme ich endlich weiter. Man, hab ich mich aufgeregt. War klar, dass es nichts großes sein kann.

Nochmal vielen Dank dafür.
 
Zurück
Oben