Hi,
ich möchte gerne Booleans zum programmieren verwenden aber das
funktioniert nicht? Und jetzt bin ich mir nicht sicher ob es überhaupt Booleans
in C gibt den ich hab sie bisher nur mit Java verwendet.
Druckbare Version
Hi,
ich möchte gerne Booleans zum programmieren verwenden aber das
funktioniert nicht? Und jetzt bin ich mir nicht sicher ob es überhaupt Booleans
in C gibt den ich hab sie bisher nur mit Java verwendet.
Es gäbe da die "stdbool.h"
die definiert den Typ "bool", sowie die Konstanten true und false
#include<stdbool.h>, der Typ heißt bool
mfG
Markus
Edit: Zu spät ...
Danke das vorallem so spät noch geantwortet wird.
Grüße Martinius
Hi
Um erstmal seine Frage zu beantworten, nein in Standart C gibt es kein Boolean!
Je nachdem wie es definiert ist, kann bool schonmal recht groß sein.
Könntest auch einfach ein ein char dafür nehmen.
Wo ist den die "stdbool.h? Ich kann die unter den AVR-Includes nicht finden.
Schreib doch einfach
am Anfang der Datei.Code:#define bool char
Na wenn dus selber definieren willst, dann gleich richtig:
bool.h
Code:#ifndef _H_BOOL_
#define _H_BOOL_
#include <inttypes.h>
typedef bool uint8_t;
#define TRUE (1 == 1)
#define FALSE (1 != 1)
#endif // _H_BOOL_
Neeein, nicht doch - Deswegen nennt es sich ja auch >std<boolZitat:
Zitat von TobiKa
Das std hat natürlich gar nichts mit Standard zu tun, nieeeemals
FYI: Festgeschrieben seit C99.
mfG
Markus
PS: WinAVR\lib\gcc\avr\4.3.3\include\stdbool.h
Je nach WinAVR-Version muss die Compilerversion angepasst werden ...
Oh tatsächlich, seit C99 isses mit drin.
Aber TobiKa hatte schon Recht: Den Datentyp boolean gibt es nur in C++. In C wird boolean nur über die "std*" Header nachgeliefert.
Obwohl ich aber glaube, dass die false / true Defininitionen in der "stdbool" eigentlich falsch sein müssten, da "false" theoretisch nicht Null sein muss.
char true, false;
false = (0==1);
true = !false;
oder so ähnlich war die Definition.
http://www.imb-jena.de/~gmueller/kurse/c_c++/c625.html
Ja, aber in der "stdbool.h", zumindest in meiner, steht folgende Definition:
Was zwar in den meisten bis allen Fällen funktionieren dürfte, aber streng genommen falsch ist.Code:// {...}
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
// {...}
Nö, false = 0, alles andere ist true. Das Makro "true" ist nur der Bequemlichkeit halber vorhanden (Zuweisungen!), wer einen bool auf Gleichheit mit true/false prüft, sollte sich noch einmal mit einem C-Tutorial/Buch auseinandersetzen.Zitat:
Zitat von Icon2k
mfG
Markus