wie kann man am besten eine bool variable realisieren ohne dabei gleich ein ganzes byte zu verschenken like unsigned char..?
Gar nicht Du kannst bestenfalls mehrere BOOL-Werte in eine Bitvariable zusammenfassen. Aber mindestens 1 Byte benötigst du. BTW, wenn du wissen willst wie so eine Bitvariable deklariert wird: typedef unsigned char BYTE; // Damit es es einfacher geht #define TRUE 0 #define FALSE 1 struct { BYTE bBool1:1; BYTE bBool2:1; BYTE bBool3:1; BYTE bBool4:1; BYTE bBool5:1; BYTE bBool6:1; BYTE bBool7:1; BYTE bBool8:1; } bitVar; So hast du 8 Boolsche Variablen, di zusammen nur 1 Byte Platz benötigen. Die Variablen sprichst du wie folgt an: bitVar.bBool1 = TRUE; // Setzt die Variable bBool1 auf TRUE bitVar.bBool2 = FALSE; // Setzt die Variable bBool1 auf TRUE if (bitVar.bBool3) { // Testet die Variable bBool3 TuEtwas(); } Gruss Christian
ok..danke hast mir trotzdem sehr weitergeholfen und ich weiss wieder was mehr..:D
Sorry, schon ewig alt, aber: #define TRUE 1 #define FALSE 0 dann klappt es auch mit If(TRUE) ...
BitteRichtiger wrote: > Sorry, schon ewig alt, aber: > > #define TRUE 1 > #define FALSE 0 > > dann klappt es auch mit If(TRUE) ... Jo, dann klappen aber damit keine Vergleiche, weil in C nunmal nicht nur die 1 TRUE ist, sondern alles, was nicht 0 ist. TRUE == 1 gilt nur als Ergebnis von Operationen (Eine Operation, die einen Wahrheitswert zurückgibt, liefert per Definition 0 für FALSE und 1 für TRUE). Abgesehen davon bist Du vielleicht Rekordhalter im Herauskramen historischer Threads für nichts und wieder nichts geworden... Die Idee mit dem #define hatten nämlich schon gaaaanz viele andere, und diejenigen, die hier vor sechseinhalb Jahren diskutiert haben, dürfte das kaum noch interessieren... EDIT: Aaaargh, sehe jetzt erst, dass Du das vertauschte 0 und 1 meintest. Toll, aber auch der Fehler hätte niemanden gejuckt, wenn Du den Thread in Frieden hättest ruhen lassen...
Also bei mir sind True/False so definiert: #define TRUE (1==1) #define FALSE (!TRUE)
> Also bei mir sind True/False so definiert: > > #define TRUE (1==1) > #define FALSE (!TRUE) Und welchen Vorteil erhoffst du dir davon? Es hat exakt denselben Effekt wie:
1 | #define TRUE 1
|
2 | #define FALSE 0
|
Mein Vorschlag: #include <stdbool.h> Dann hat man den Typ bool mit den Werten true und false, wie in 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.