Archiv verlassen und diese Seite im Standarddesign anzeigen : Gibt es den Datentype Boolean in C?
Martinius11
26.12.2010, 01:36
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 ...
Martinius11
26.12.2010, 04:09
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
#define bool char
am Anfang der Datei.
Na wenn dus selber definieren willst, dann gleich richtig:
bool.h
#ifndef _H_BOOL_
#define _H_BOOL_
#include <inttypes.h>
typedef bool uint8_t;
#define TRUE (1 == 1)
#define FALSE (1 != 1)
#endif // _H_BOOL_
Um erstmal seine Frage zu beantworten, nein in Standart C gibt es kein Boolean!
Neeein, nicht doch - Deswegen nennt es sich ja auch >std<bool
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.
radbruch
26.12.2010, 15:45
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:
// {...}
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
// {...}
Was zwar in den meisten bis allen Fällen funktionieren dürfte, aber streng genommen falsch ist.
Obwohl ich aber glaube, dass die false / true Defininitionen in der "stdbool" eigentlich falsch sein müssten, da "false" theoretisch nicht Null sein muss.
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.
mfG
Markus
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.