Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#14

Re: Boolean in Integer umwandeln

  Alt 5. Jan 2007, 19:29
Bevor jetzt etwas ausbricht was nicht geplant was - meine Variante war nur Spaß. Das war so weit von richtig (richtig im Sinne von Umrechnungsfunktion für BoolToInt), daß mich die Reaktion geradezu gewundert hat. Es sollte nur die Möglichkeiten zeigen was so alles möglich ist. Dabei kommt zwar was interessantes raus, ist aber keine Umrechnungsfunktion.

Zitat von xaromz:
Dann will ich auch mal klugscheißen. Boolean ist nicht, ich wiederhole, nicht definiert als Null und Eins. Das mag für die Werte True und False unter Delphi gelten, aber damit hat sich das Ganze schon wieder.
Nun, das Problem ist, daß der kleinste Wert den man speichern kann ein Byte ist. Das bedeutet aber nicht, daß es eine Rolle spielt, bzw. spielen sollte. Ein True ist True und False ist False. Hier ist True 1, in einigen anderen Sprachen ist es auch mal -1, und dann gibt es Sprachen mit ganz verrückten Bools wo es sogar ein Nil mit 2 (oder war das -2?) gibt, für den Fall, daß es noch keine Entscheidung gab.

Aber um auf dein Einwand zu kommen

Zitat:
Der einzige Wert, der bei Boolean definiert ist, ist Null, was als False interpretiert wird. Folglich ist auch Zwei nicht False, also als True zu interpretieren.
Das ist nicht richtig im Sinne von Boolean.

Nur weil etwas nicht definiert ist, bedeutet es nicht, daß es eine Wahlmöglichkeit gibt. Ein Boolean hat zwei Zustände, nicht drei und auch nicht vier. Zwei. Ob nun False für 0 steht und True für 1, 2 oder 3 ist egal. Nicht egal ist ob True für 1 und 2 und 3 steht. Tut es nicht. Ein Boolean steht für zwei Zustände. Es kann für 0 und für 7 stehen, aber dann nicht für 1. Also, nur weil es nicht knallt wenn ich Inc(Bool) mache, bedeute es nicht, daß True alles ungleich 0 ist, dann dann wäre die Boolean Definition nicht, daß es eines von zwei Zuständen ist, sondern Null und allem Anderen.

Deshalb kann man Inc(Bool) als Programmierfehler ansehen.

Anders sieht es aus wenn du nicht von Delphi/Pascal sprichst, sondern allgemein. Da könnte False für 12 und True für 27 stehen. Hauptsache zwei Zustände. Aber wir sind hier in einem Programmierforum für Delphi.
  Mit Zitat antworten Zitat