Ich hätte gedacht, man exerziert das mal mit jeder Deziamlstelle druch. Da müsste doch der selbe Code entstehen, nur dass man ihn mit Sprungmarken zwischendrin anspringen kann, um die großen zahlen zu umgehen.
Das ein Einfaches if/else nicht viel bringt, könnt ich nachvollziehen
unsigned int zu char[]
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Re: unsigned int zu char[]
Ich hab zufällig was im Netz gefunden, was scheinbar komplett ohne Multiplikation auskommt und stattdessen mehrere Subtraktionen ausführt. Ob das schneller ist, kann ich nicht abschätzen. Die Datentypen muss man entsprechend anpassen. bit scheint einfach ein BOOL zu sein und das code kann man weglassen. In dem Fall geht das nur für 4-stellige Zahlen, aber man kann das TEST-Array und den Wert von i ja anpassen.
Code: Alles auswählen
void outint( int val )
{
uint code TEST[] = { 10, 100, 1000, 10000 };
uchar d, i;
bit zero;
uint uval = val;
if( val < 0 ){
uval = -val;
putchar( '-' );
}
zero = 1;
i = 4;
do{
i--;
for( d = '0'; uval >= TEST[i]; uval -= TEST[i] ){
d++;
zero = 0;
}
if( zero == 0 )
putchar( d );
}while( i );
putchar( (uchar)uval + '0' );
}
Ohne Input kein Output.