Komische Werte mit printf()
-
Ich wollte ein Programm schreiben das Dezimalzahlen in Binärzahlen umwandelt.
Der Code dazu lautet:void dezitobin(long dezi) { short binziffern[100]; long buf = dezi; //long bin; short n = 0; while(buf > 0) { binziffern[n] = buf % 2; buf = (buf - binziffern[n]) / 2; n++; } while( n > 0) { printf("%d",binziffern[n]); n--; } }
die printf Funktion gibt mir jedoch immer -13108 aus und direkt dahinter die Dezimalzahl geteilt durch zwei in binärcode aus. Kann mir bitte wer helfen.
MfG Simon
-
Also wieso das nur die halbe dezimalzahl steht habe ich jetzt rausgefunden.
In der zweiten While schleife hätte ich einfach nur >= schreiben müssen.
Jedoch wieso immer vorher -13108 steht verstehe ich immer noch nicht.
-
Hallo,
naja, ist doch eigentlich klar, bevor du aus der ersten while-Schleife austrittst, wird n ja noch einmal erhöht (n++), aber dann kann an dieser Array-Position auch nichts Vernünftiges enthalten sein, denn das binziffern-Array wird ja danach an der jetzt überflüssigen Position nicht mehr mit einem Wert besetzt (passiert nur in der while-Schleife). An dieser Position steht eben zufällig -13108, das ist das ganze Geheimnis.
MfG
-
Du hast den falschen Formatcode. short gibt man mit "%hd" aus.