Forum: Compiler & IDEs Zahlen Umwandeln


von James (Gast)


Lesenswert?

Tag.

Ich fange an in c zu programmieren und wollte was fragen:

ich will nur (einstellige) Ziffern verarbeiten (von 0 bis 9)
und sie über USART ausgeben.

1. Reicht es aus wenn ich unsigned char nehme ? etwa so ?
   unsigned char test=5;

2. Wie wandle ich die variable test um, sie über USART auszugeben?
   itoa ??? oder geht es anders?

P.S. Wo finde ich gute Beispiele für den Anfang???

von Karl H. (kbuchegg)


Lesenswert?

James schrieb:
> Tag.
>
> Ich fange an in c zu programmieren und wollte was fragen:
>
> ich will nur (einstellige) Ziffern verarbeiten (von 0 bis 9)
> und sie über USART ausgeben.
>
> 1. Reicht es aus wenn ich unsigned char nehme ? etwa so ?
>    unsigned char test=5;

Ja.
Ein unsigned char kann Zahlen von 0 bis 255 aufnehmen.

>
> 2. Wie wandle ich die variable test um, sie über USART auszugeben?
>    itoa ??? oder geht es anders?

Wenn es wirklich nur einstellige Zahlen sind

   char digit = test + '0';

digit gibst du dann über deine UART Bauchstabenroutine aus.
1
    unsigned char test = 5;
2
    char digit = test + '0';
3
    uart_putc( digit );

oder kürzer
1
    unsigned char test = 5;
2
    uart_putc( test + '0' );

Aber in test müssen wirklich nur einstellige Zahlen sein. Sobald da 
größere Zahlen drinnen sind, geht das nicht mehr.

> P.S. Wo finde ich gute Beispiele für den Anfang???

Definiere 'gut'

von James (Gast)


Lesenswert?

Super!
Danke Karl heinz Buchegger!
Sehr verständlich erklärt und ICH hab´s verstanden !
Danke für die Erklärung.

von James (Gast)


Lesenswert?

Guten Abend!
Noch eine andere Frage...

Ich habe folgende Schleife...
Die Schleife soll bei x=2 oder bei y=1 verlassen werden.

do
{
....
}while(x<2 && y==1);

mach irgendwas...

Warum klappt mein Ansatz nicht???

von James (Gast)


Lesenswert?

sorry mein Ansatz war...

while(x<2 && y==1);

geht aber (auch) nicht.

von holger (Gast)


Lesenswert?

>Die Schleife soll bei x=2 oder bei y=1 verlassen werden.

>do
>{
>....
>}while(x<2 && y==1);

>Warum klappt mein Ansatz nicht???

Weil && kein Oder ist ;)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Die Schleife soll bei x=2 oder bei y=1 verlassen werden.

do
{
....
} while(x!=2 && y!=1);

Oder

do
{
....
} while(!(x==2 || y==1));

Fall 5 auf
http://www.mathematik.hu-berlin.de/~jkoven/mathe/logregeln/logregeln.html

von James (Gast)


Lesenswert?

Hallo Holger.

Auf diese Weise funktioniert auch nicht :o(

while(x<2 || y==1);

von James (Gast)


Lesenswert?

Danke Stefan.

Habe deine Antwort zu spät gesehen...

So geht´s... Danke für den link !

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.