Page 1 of 1
Define von TRUE und FALSE
Posted: 14. May 2007 14:08
by Da-Beej
Hallo Forum,
bis anhin war ich es mir gewohnt, folgendes in einem Programm zu definieren:
Vorhin ist mir diese Definition begegnet
Code: Select all
#define false (0!=0)
#define true (0==0)
Was ist der Vorteil/Grund?
Vielen Dank auch!
Da-Beej
Posted: 14. May 2007 19:19
by Janka
Die untere Definition funktioniert auch, wenn FALSE auf der betreffenden Maschine als 664576 und TRUE als 24542 definiert ist.
Janka
Posted: 15. May 2007 11:06
by hjb
Hi!
Der C-Standard schreibt vor, dass 0 als False interpretiert wird, alles andere als True. Die Definition ist daher Bullshit.
Grüße,
hjb
Posted: 15. May 2007 11:47
by Janka
Ich hab' zwar im Standard
http://www.open-std.org/JTC1/SC22/WG14/ ... /n1124.pdf
nirgendwo eine konkrete Definition von True und False gefunden, allerdings wird dort an vielen vielen Stellen einfach 0 als False angenommen, und 1 bzw. nicht 0 als True. Insofern hat hjb recht, mit dem jetzigen C-Standard ist die Definition überflüssig.
Statt es selbst zu definieren, sollte man allerdings lieber <stdbool.h> einbinden.
Janka
Posted: 16. May 2007 10:28
by hjb
Hi,
in C gibt es kein True und False. Konstrukte wie if, while und Vergleiche arbeiten mit int, wobei halt 0 False entspricht und alles andere True. War auch schon immer so.
Ist stdbool.h so Standard, wie der Name suggeriert? War mir bisher nicht bekannt.
Grüße,
hjb
Posted: 16. May 2007 18:01
by Janka
Wird ebenfalls im verlinkten Dokument erwähnt und empfohlen.
Janka