Nur zur Verdeutlichung, ich habe eine ähnliche Antwort gefunden, aber für C ++ bin ich etwas neu in der Codierung, daher bin ich mir nicht sicher, ob sie auch für C gilt.
In c, in Bool, wahr == 1 und falsch == 0?
Piotrek Karpowicz
Genauer gesagt alles, was nicht ist 0
ist wahr.
So 1
stimmt, ist aber so 2
, 3
… etc.
-
Die Frage scheint sich auf bestimmte Entitäten zu beziehen:
bool
true
undfalse
nicht auf allgemeine Werte, die “machtif
nimm den wahren Zweig”.– AnT steht zu Russland
12. Oktober 2016 um 22:01 Uhr
-
@AnT Wenn er nicht gesagt hätte, dass er neu in der Programmierung ist, wäre ich darauf eingegangen. Aber es ist leicht zu sagen, dass er das gemeint hat.
– Neil Locketz
12. Oktober 2016 um 22:03 Uhr
-
Kommt darauf an, was du mit “ist wahr” meinst. Die Kennung
true
ist ein Makro, das in definiert ist<stdbool.h>
und sein Wert ist spezifisch1
(und sein Typ istint
). Andererseits wird jeder Nicht-Null-Wert als wahr behandelt, wenn er als Bedingung verwendet wird. Deshalb so etwas wieif (b == true)
ist gefährlich; einfach schreibenif (b)
stattdessen.– Keith Thompson
12. Oktober 2016 um 22:12 Uhr
-
Und das ist, warum IMO die
bool
dient nur zum Setzen eines Wertes, nicht zum Testen. Zum Testen ist es ohne formale Definition in der C-Sprache enthalten. Ich gehe weiter: diebool
Typ ist völlig nutzlos, außer möglicherweise, um sich von diesen Sprachen zu unterscheiden, in denentrue
ist-1
aber es gilt:0
falsch ist, alles andere ist wahr.– Wetterfahne
12. Oktober 2016 um 22:17 Uhr
-
Genauer gesagt irgendetwas gleich 0 vergleicht ist falsch. Ein Nullzeiger darf nicht 0 sein, ist aber gleich 0 und daher falsch wie in
if(null_pointer)
– chux – Wiedereinsetzung von Monica
12. Oktober 2016 um 23:16 Uhr
Erich Lippert
Sie haben es versäumt zu sagen, um welche Version von C Sie sich Sorgen machen. Nehmen wir an, es ist dieser hier:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Wie Sie beim Lesen der Spezifikation sehen können, sind die Standarddefinitionen von true
und false
sind 1 und 0, ja.
Wenn sich Ihre Frage auf eine andere Version von C oder etwa nicht standardmäßig Definitionen für true
und false
dann stellen Sie eine spezifischere Frage.
-
Noch eine seltsame Eigenart von C …
true
ist ein int, kein bool– MM
12. Oktober 2016 um 22:05 Uhr
-
Danke, das hat geholfen, wie jemand darauf hingewiesen hat, dass ich die Frage nicht sehr gut spezifiziert habe, aber Sie haben es trotzdem geschafft, sie zu beantworten, nochmals vielen Dank! , und es tut mir leid, ich weiß wirklich nicht, wo ich überhaupt nachsehen soll, welche Version :/ Ich bin an dieser Stelle wirklich grün :/
– Piotrek Karpowicz
12. Oktober 2016 um 22:10 Uhr
-
@KeithThompson: In der Tat. In Ermangelung einer Anleitung durch das Originalplakat habe ich einfach den ersten Standard ausgewählt, den eine Suche ergab. Danke für den Link.
– Eric Lippert
12. Oktober 2016 um 22:12 Uhr
-
@EricLippert
bool
ist eine Typedef für einen Typ_Bool
Dies ist ein ganzzahliger Typ, der sich von allen anderen ganzzahligen Typen unterscheidet.true
ist ein Makro, das auf erweitert wirdint
1
. Ich kann Kapitel und Verse für jedes von ihnen geben, wenn Sie es nicht finden können.– MM
12. Oktober 2016 um 22:20 Uhr
Wohl ein Duplikat von Using boolean values in C
– GSerg
12. Oktober 2016 um 21:59 Uhr
Die Ausdrücke
true == 1
undfalse == 0
sind beide wahr. (Undtrue == 2
ist nicht wahr). Wenn Sie das nicht gemeint haben, können Sie die Frage klären?– MM
12. Oktober 2016 um 22:03 Uhr
@MM Oh ja, es tut mir leid, jetzt sehe ich, was ich gerade geschrieben habe. Ich meine, wenn Sie etwas in while oder if verwenden möchten, verwenden Sie (sagen wir) while(blabla == 0) oder etwas anderes.
– Piotrek Karpowicz
12. Oktober 2016 um 22:07 Uhr
while(X)
ist äquivalent zuwhile( (X) != 0 )
– MM
12. Oktober 2016 um 22:17 Uhr
Mögliches Duplikat von Using true and false in C
– phuklv
23. Mai 2017 um 15:00 Uhr