In c, in Bool, wahr == 1 und falsch == 0?

Lesezeit: 3 Minuten

Benutzer-Avatar
Piotrek Karpowicz

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.

  • Wohl ein Duplikat von Using boolean values ​​in C

    – GSerg

    12. Oktober 2016 um 21:59 Uhr

  • Die Ausdrücke true == 1 und false == 0 sind beide wahr. (Und true == 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 zu while( (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

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 und falsenicht auf allgemeine Werte, die “macht if 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 spezifisch 1 (und sein Typ ist int). Andererseits wird jeder Nicht-Null-Wert als wahr behandelt, wenn er als Bedingung verwendet wird. Deshalb so etwas wie if (b == true) ist gefährlich; einfach schreiben if (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: die bool Typ ist völlig nutzlos, außer möglicherweise, um sich von diesen Sprachen zu unterscheiden, in denen true ist -1aber 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

Benutzer-Avatar
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 falsedann 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

  • N1256 ist ein Entwurf des ISO-C-Standards von 1999. Der neueste Standard ist C11; der neuste Entwurf ist N1570. _Bool und <stdbool.h> wurden der Sprache von C99 hinzugefügt (und natürlich in C11 beibehalten).

    – Keith Thompson

    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 wird int 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

1369160cookie-checkIn c, in Bool, wahr == 1 und falsch == 0?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy