false und true



  • cd9000 schrieb:

    bool b = false;
    for(unsigned int i = 1; i < std::pow(2, sizeof(bool) * 8); i++)
      b++;
    // Kann folgendes Inkrement bei schlechten Compilern zum Überschreiten des Wertebereichs führen? 
    b++;
    

    bei schlechten compilern mag alles passieren.
    aber bei guten hat ein boot nur 0 oder 1 drin und sonst nix.
    bool(1+1)==1;

    man mache nämlich gerne

    bool a=veca.length();
    bool b=vecb.length();
    
    //und später sooft man mag
    if(a==b)
    


  • @RPD:
    Vielleicht hilt dir das beim Verständniss:

    An r-value of type Foo can be converted to an r-value of type int, with state "Cat" becoming one and any other state becoming zero.

    so einfach ist das...

    Das man jetzt schon zum Englischen greifen muss, um etwas verständlich zu machen ist echt tragisch.



  • HumeSikkins schrieb:

    Entweder man verbietet beides oder erlaubt beides, ich verstehe den Unterschied noch nicht ganz.

    Naja. Das eine ist invariant gegenüber Wiederholung und das andere nicht.
    Da true alles ungleich null ist, kann man ein bool beliebig inkrementieren,
    das Ergebnis ist true. Egal ob du das hundert mal machts oder einmal.

    Wenn ++b für jede interne Repräsentation von b true ist, muß der Compiler aufpassen, dass b nicht zufällig gerade genau die Repräsentation hat, die beim inkrementieren 0 ergibt (255 bei byte-großen bools.) Also kann er genausogut ++b als b=true ansehen. Und dann auch --b als b=false.

    Ein Zähler in der Art ++b; ++b; --b; // immer noch true wär daher nicht möglich, beim Überlauf würde ++b ja false ergeben, und das will der Standard anders haben.



  • @Helium
    hab trotzdem noch keinen compiler gesehen der aus true keine 1 macht.



  • RPD schrieb:

    @Helium
    hab trotzdem noch keinen compiler gesehen der aus true keine 1 macht.

    Wenn du mal genau liest, wirst du feststellen, dass Helium das gar nicht bestritten hat. Er weist lediglich auf den Unterschied zwischen "macht daraus eine 1" (bzw. standardesisch "wird zu 1 konvertiert") und "ist 1" hin.



  • boolalpha |

    true false <--



  • *nochmalgenaugelesen*
    jetzt hab ichs auch verstanden 💡
    *freu* 😃


Anmelden zum Antworten