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.


Anmelden zum Antworten