Forum: Compiler & IDEs Int, Char Umwandlung


von Deramon (Gast)


Lesenswert?

Hallo,
ich hab nun schon ein paar Versuche gestartet, aber bin bisher zu
keiner Lösung gekommen :( Hab bisher nur AVRs in Bascomp programmiert,
aber dieser Basicinterpereter nicht das Gelbe vom Ei ist versuche ich
mich zur Zeit in C. Leider habe ich bisher noch keine Möglichkeit
gefunden, so easy wie in Bascom zu debuggen...

Problem:
int test = 326;

test soll nun in 3 einzelne Int zerlegt werden:

int x = 3;
int y = 2;
int z = 6;

Wie mache ich das am besten ?

Vielen Dank schon mal im Vorraus

cya
Deramon

von franz (Gast)


Lesenswert?

So sollte es gehen:

 x=test/100;
 test-=(x*100);

 y=test/10;
 test-=(y*10);

 z=test;

Grüße,
Peter

von Deramon (Gast)


Lesenswert?

Danke :)
Einfach und genial...


Ich war bisher total auf int -> Char umwandlung fixiert. Den Char dann
mit einer funktion zerlegen(wie in Bascom mit Mid(string,start,len)
oder c# string.substring(start,len) und zurück in int umwandlen. Hab so
eine funktion in string.h nicht entdecken können, bzw. komme mit diesen
funktionen nicht so ganz klar.

Interessieren würde es mich aber schon. Gibt es so eine Funktion in C,
falls ja wie würde das in diesem Fall funktionieren ?
Der Bascom code ohne umwandlung von/nach int wäre dafür:
test = "326"
x = Mid(test,1,1);
y = Mid(test,2,1);
z = Mid(test,3,1);

cya
Deramon

von Matthias (Gast)


Lesenswert?

Hi

wenn es um die extraktion einzelner Zahlen aus einem String geht:

test = "326"
x = test[0]-0x30;
y = test[1]-0x30;
z = test[2]-0x30;

von Karl Florian (Gast)


Lesenswert?

Hallo, also wenn das keine compiler- oder interpreterspezifische
Eigenschaft ist geht das in C so:

int test = 326;
int x,y,z;
x = test/100;
y = (test%100)/10; //Divisionsrest der division durch 100 durch 10
z = test%10; //Divisionsrest der division durch 10

mfg florian

was funktioniert ist schon alt

von franz (Gast)


Lesenswert?

Hallo Karl Florian,

Deine Variante hatte ich vor längerer Zeit auch mal im Einsatz.
Soweit ich mich noch richtig erinnere, war der von WinAVR erzeugte Code
größer als der von der Variante aus meiner ersten Antwort oben.

Ich kann mich aber auch irren.

Grüße,
Peter

von Karl Florian (Gast)


Lesenswert?

Hallo Peter,
das glaube ich mal unbesehen, vielleicht sollte ich in Zukunft schon
beim Problem über die Optimierung nachdenken.
mfg florian

warum heisst C eigentlich C? weil mir A und B nicht mehr gefallen hat.

von Jörg Wunsch (Gast)


Lesenswert?

> warum heisst C eigentlich C? weil mir A und B nicht mehr gefallen
> hat.

Naja, fast. :-)

Es gab in der Tat eine Vorläufersprache namens B, so daß der
Nachfolger eben C genannt worden ist.  A gab's der Legende nach
allerdings nicht. ;-)  (Das B könnte auch ein Abkürzungsbuchstabe
gewesen sein, kann ich mich gerade nicht erinnern.)

von Jürgen (Gast)


Lesenswert?

So war es:

CPL -> BCPL -> B -> C

;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.