.| Autor | Beitrag |
|---|---|
|
000 03.02.2003, 12:34 K-Putt |
Kommt ja in der Windows-Programmierung, und auch im HL Source öfters vor: BOOL Funktion() aber auch bool Funktion() Ich weiß das es der rückgabetyp der Funktion ist, aber welcher unterschied besteht zwischen bool (kleingedruckt) und BOOL (capslock) ? --Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
001 03.02.2003, 14:38 Kriz |
BOOL basiert auf einem C-Makro, da die WinAPI ja in C geschrieben worden ist, während bool der logische Datentyp in C++ ist: #define BOOL int K:R-I)Z++ |
|
Profil || Suche |
|
002 03.02.2003, 14:47 [RMen]OneStone |
Wobei bool dann meistens so groß wie ein char ist (AFAIK), und int halt viermal so groß. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
003 03.02.2003, 14:52 HammerBlade |
BOOL ist gleich int, da BOOL durch Micro$oft aus irgendwelchen Günden definiert wurde: bool ist ein echter boolscher Wert (und eigentlich die sauberer Lösung), da er nur true oder false annehmen kann. Wenn du eine Funktion hast die BOOL zurückgibt, dann typcast das nicht in bool, denn z.B. Funktionen der MFC von Micro$oft geben mit unter auch negative Werte in einem BOOL zurück, die dann eine Fehlermeldung darstellen und ein bool kann keine negative Werte annehmen. *edit* "Mit C++ (noch besser mit C) kann man sich _sehr_ leicht in den Fuss schiessen." - theDon Dieser Beitrag wurde am 03.02.2003 um 14:53 von HammerBlade bearbeitet. |
|
Profil || Suche |
|
004 03.02.2003, 15:31 Kriz |
@HammerBlade: bool ist nur dann die bessere Lösung, solange man mit einem C++ Compiler arbeitet. Unter C gibt's kein bool (weiß nicht, wie C99 das sieht). Desweiteren sagt die Definition: false = 0 und true != 0. Theoretisch ist also -1 für bool dasselbe wie true. Nur strikte Sprachdefinitionen wie in Java (wo das übrigens nicht bool sondern boolean heißt) erlauben nur true und false als Werte. Typkonvertierungen wie in C/C++ sind in Java z.B. nicht erlaubt, d.h. der logische Datentyp boolean ist dort absolut inkompatibel zu allen anderen primitiven Datentypen. Als alter C/C++'ler ist das irgendwie voll nervig, aber andererseits auch verständlich. Hm, eigentlich ist das voll Kagge >=) --K:R-I)Z++ |
|
Profil || Suche |
|
005 03.02.2003, 16:26 K-Putt |
Danke für die schnelle und ausführliche Hilfe :) --Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database |
|
Profil || Suche |
|
006 03.02.2003, 19:48 Tron |
jo, per standard ist sizeof(bool) == sizeof(char) damals gab es noch kein bool, quasi jeder hat das so gemacht, m$ hat das net erfunden. wobei manche leute auf die abstruse idee kamen: #define TRUE 0 #define FALSE 1 was unheimlich viel spas beim fehlersuchen bringt, wenn man mit einer bibliothek von so jemandem arbeiten muss... gibt's in c99 ein ganz klares jein... bei bool b = -1; wird eine implizite typumwandlung durchgefuehrt, so als haette man bool b = static_cast<bool>(-1); // bool b = (bool)-1; fuer die c'ler da draussen (; geschrieben. das bedeutet es wird der wert 1 (per definition true), egal welchen wert != 0 man benutzt, in die bool variable geschrieben. die existenz dieser impliziten umwandlung ist wohl mit kompatibilitaet zu c zu beantworten, z.b. fuer bibliotheken, die int als bool-ersatz verwendet haben. genau (: java is ja sowieso keine echte sprache (< -- 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
007 03.02.2003, 21:05 Horat |
nich? Bild Blog <-- |
|
Profil || Suche |
|
008 04.02.2003, 08:47 Kriz |
Natürlich ist Java eine richtige Sprache, Tron labert nur gerne mal im Suff >;) --K:R-I)Z++ |
|
Profil || Suche |

