PDA

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.

Felix G
26.12.2010, 01:58
Es gäbe da die "stdbool.h"

die definiert den Typ "bool", sowie die Konstanten true und false

markusj
26.12.2010, 01:59
#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

TobiKa
26.12.2010, 10:44
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.

Icon2k
26.12.2010, 12:47
Wo ist den die "stdbool.h? Ich kann die unter den AVR-Includes nicht finden.

TobiKa
26.12.2010, 12:57
Schreib doch einfach


#define bool char

am Anfang der Datei.

Icon2k
26.12.2010, 13:05
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_

markusj
26.12.2010, 13:44
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 ...

TobiKa
26.12.2010, 14:13
Oh tatsächlich, seit C99 isses mit drin.

Icon2k
26.12.2010, 14:59
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

Icon2k
26.12.2010, 16:06
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.

markusj
26.12.2010, 19:13
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