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:

Code: Select all

#define TRUE 1
#define FALSE 0
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