Wie funktioniert bool ?
-
-
Vorsicht: bool ist kein ANSI C Standard
laut MSDN:
bool
C++ Specificbool declarators;
This keyword is an integral type. A variable of this type can have values true and false. All conditional expressions now return a value of type bool. For example, i!=0 now returns true or false depending on the value of i.
Willst du's trotzdem benutzen solltest du den Datentyp entsprechend definieren:
#ifndef __cplusplus typedef unsigned char bool; #endif
Bei Abfragen kannst du true und false weglassen:
bool b; ... if (b == true) { } ... if (b == false) { }
hat den gleichen Effekt wie:
bool b; ... if (b) { } ... if (!b) { }
nochwas:
bool kann für unterschiedliche IDE's unterschiedlich definiert sein, also möglichst in grössenabhängigen Strukturen vermeiden.
wieder aus MSDNIn Visual C++4.2, the Standard C++ header files contained a typedef that equated bool with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1.
-
Original erstellt von groovemaster2002:
Vorsicht: bool ist kein ANSI C StandardDoch, siehe kingruedi.
-
@groovemaster
bool ist aber ein ANSI C typedef, der eigentliche Typ ist _Bool (siehe C99 Standard)@darkpenguin
wilkommen im Jahr 2003, wie haben nun seit 4(!) Jahren _Bool, was von vielen C Compilern unterstützt wird (und wenn man pech hat, macht man sich eben sein eigenes define, aber ob man für 1/0 direkt ca 4 byte braucht, ist natürlich eine andere Sache...)
-
@SG1
Doch, siehe kingruedi.stimmt schon, ich wollt's auch nur für Leute loswerden, die einen ALTEN Compiler haben, der lediglich die C89/C90 ANSI Norm beherrscht.
-
unter c++ ist bool ein eigener Datentyp und ich glaube hendrik benutzt c++builder (der thread wurde (falsch?) verschoben, btw. im c++ forum gibts ihn auch, nur bissel anders )
-
naja, hier werden andauernd C++-Threads reingeschoben... am besten man läßt das Antworten ganz bleiben, erspart einem ne Menge Zeit und Ärger
-
ne, der Thread wurde hier gepostet und einmal im C++Builder Forum und von dort in das C++ Forum verschoben. Ein Mod ist nicht Schuld! <Hendrik> ist schuld, wenn er nicht weiss was er benutzt.
Also nochmal zum mitschreiben
Nicht alles was C ist, ist C++ (und natürlich umgekehrt)
-
die meisten, die nicht wissen was sie programmieren, programmieren C++
denn die nehmen einfach ihren Borland oder MS Compiler und fangen an zu schreiben ... C macht man entweder bewußt oder wenn man grad mal nur den LCC hat.
-
da hast du recht, verstehe aber trotzdem nicht, warum der Typ dann C mit dem Borland C**++** programmieren will