In den alten Tagen von C gab es keinen Booleschen Typ. Die Leute verwendeten die int
zum Speichern von Booleschen Daten, und es funktionierte meistens. Null war falsch und alles andere war wahr.
Dies bedeutet, wenn Sie eine nehmen int flag = 0;
und später tun flag++
, wäre der Wert wahr. Dies würde funktionieren, unabhängig davon, wie hoch der Wert von flag war (es sei denn, Sie haben es häufig getan, es hat sich gedreht und Sie sind auf Null zurückgekehrt, aber ignorieren wir das) - Erhöhen des Flags, wenn sein Wert 1 war, würde 2 ergeben, was immer noch war wahr.
Einige Leute benutzten dies, um einen booleschen Wert bedingungslos auf true zu setzen. Ich bin nicht sicher, ob es jemals idiomatisch wurde , aber es ist in irgendeinem Code.
Dies hat nie funktioniert --
, denn wenn der Wert nicht 1 ist (was auch immer sein könnte), ist der Wert immer noch nicht falsch. Und wenn es bereits false ( 0
) war und Sie einen Dekrementierungsoperator dafür durchgeführt haben, würde es nicht false bleiben.
Bei der Verlagerung von Code von C nach C ++ in den Anfängen war es sehr wichtig, dass der in C ++ enthaltene C-Code weiterhin funktioniert. Und so heißt es in der Spezifikation für C ++ (Abschnitt 5.2.6 (auf Seite 71)):
Der durch Anwenden eines Postfix ++ erhaltene Wert ist der Wert, den der Operand vor dem Anwenden des Operators hatte. [Anmerkung: Der erhaltene Wert ist eine Kopie des ursprünglichen Werts.] Der Operand muss ein veränderbarer Wert sein. Der Typ des Operanden muss ein arithmetischer Typ oder ein Zeiger auf einen vollständigen Objekttyp sein. Nachdem das Ergebnis notiert wurde, wird der Wert des Objekts durch Hinzufügen von 1 geändert, sofern es sich nicht um ein Objekt vom Typ bool
handelt. In diesem Fall wird der Wert auf true festgelegt. [Hinweis: Diese Verwendung ist veraltet, siehe Anhang D.]
Der Operand von postfix - wird analog zum Operator postfix ++ dekrementiert, nur dass der Operand nicht vom Typ sein soll bool
.
Dies wird erneut in Abschnitt 5.3.2 erwähnt (für den Präfix-Operator - 5.2.6 war auf Postfix).
Wie Sie sehen, ist dies veraltet (Anhang D im Dokument, Seite 709) und sollte nicht verwendet werden.
Aber deshalb. Und manchmal können Sie den Code sehen. Aber tu es nicht.