Kann ich über Compiler hinweg eine Gleichwertigkeit zwischen (bool)true und (int)1 annehmen?
Die vorliegende Frage dreht sich darum, ob die Gleichheit besteht (bool)true == (int)1 gilt allgemein für C-Compiler. Mit anderen Worten, kann man mit Sicherheit von der Austauschbarkeit dieser beiden Ausdrücke ausgehen?
Laut der gegebenen Antwort lautet die Antwort ein klares „Ja“. Die Abgüsse selbst sind aufgrund der ganzheitlichen Förderung überflüssig. Die Integral-Hochstufung schreibt vor, dass Bool-Werte automatisch zu int hochgestuft werden, wobei „true“ speziell auf den ganzzahligen Wert 1 heraufgestuft wird.
Dieses Verhalten wird im Abschnitt 4.7 [conv.integral] / 4 des C-Standards ausführlich beschrieben, in dem es ausdrücklich heißt dass „Wenn der Quelltyp bool ist... true in eins konvertiert wird.“
Daher ist der Ausdruck true == 1 im Wesentlichen äquivalent zu 1 == 1, die unabhängig vom verwendeten Compiler als wahr ausgewertet wird.
Das obige ist der detaillierte Inhalt vonKann ich immer davon ausgehen, dass „(bool)true' in C äquivalent zu „(int)1' ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!