unsigned char hochzählen?

Gast #2149706
Lesenswert?

Hallo,

ich brauche in einer Funktion eine Variable, die immer bis 2 zählt und 
dann zurückgesetzt wird.

Würde folgendes funktionieren:
{
static unsigned char t=0;

if(t < 3)   // wird alle 60ms ausgeführt
 {
  t++;
 }
else
  t=0;

}

Geht das, oder wegen dem Datentyp "unsigned char" nicht?
Gast #2149712
Lesenswert?

Der Wertebereich ist nicht mein Problem. Ich dachte nur das eine 
char-Variable nach der ASCII-Tabelle geht und ich bin mir nicht sicher, 
ob ich da die Abfrage

t < 3
oder
t < '3'

Machen kann und was genau bei t++; passiert.
#2149724
Lesenswert?

Zugegeben, der Name dieses Types ermöglicht duraus verwirrung.
Der name soll aber nur andeuten das hier der wertebereich der 
ASCII-Codierten zeichen hinnein passt. Ansonsten ist eine gans normaler 
Integer-Typ.

'3' == 0x33 == 51
sind nur andere Darstellungen ein un dem selben Werts. Der 
Speicherstelle ist es egal wie Du den Wert eingegeben hast oder wie Du 
ihn darstellst.
Es steht immer 00110011b drinnen.

Volker
Gast #2149830
Lesenswert?

Also, so wie ich dich verstanden habe, willst du ja bis 2 zählen. Also 
soll die Variable den Wert 0, 1 oder 2 haben. Also kommt kein ASCII 
Zeichen vor.
1
static unsigned char t=0;
2

3
if(t < 3)   // wird alle 60ms ausgeführt
4
 {
5
  t++;
6
 }
7
else
8
  t=0;

sollte gehen, eleganter ist aber:
1
static unsigned char t=0;
2

3
t++;
4
t%=2; //Bei 2 wird die Variable zu 0

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren