Define von TRUE und FALSE

Antworten
Nachricht
Autor
Da-Beej

Define von TRUE und FALSE

#1 Beitrag von Da-Beej » 14. Mai 2007 14:08

Hallo Forum,

bis anhin war ich es mir gewohnt, folgendes in einem Programm zu definieren:

Code: Alles auswählen

#define TRUE 1
#define FALSE 0
Vorhin ist mir diese Definition begegnet

Code: Alles auswählen

#define false (0!=0)
#define true  (0==0)
Was ist der Vorteil/Grund?

Vielen Dank auch!

Da-Beej

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 14. Mai 2007 19:19

Die untere Definition funktioniert auch, wenn FALSE auf der betreffenden Maschine als 664576 und TRUE als 24542 definiert ist.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#3 Beitrag von hjb » 15. Mai 2007 11:06

Hi!

Der C-Standard schreibt vor, dass 0 als False interpretiert wird, alles andere als True. Die Definition ist daher Bullshit.

Grüße,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 15. Mai 2007 11:47

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
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#5 Beitrag von hjb » 16. Mai 2007 10:28

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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#6 Beitrag von Janka » 16. Mai 2007 18:01

Wird ebenfalls im verlinkten Dokument erwähnt und empfohlen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Antworten