In C ist es eine gängige Praxis, Typumwandlung zu verwenden, um Daten von einem Typ zu konvertieren zu einem anderen. Diese Frage untersucht, ob wir die Äquivalenz von (bool)true und (int)1 in C-Compilern sicher annehmen können.
Die Äquivalenz
Die Konvertierung von bool nach int wird durch den C-Standard in Abschnitt 4.7 [conv.integral] / 4 definiert. Es besagt, dass, wenn der Quelltyp bool ist, der Wert true in eins konvertiert wird. Das bedeutet, dass im Ausdruck (bool)true == (int)1 der bool-Wert zu einem int hochgestuft wird und einen Wert von 1 hat.
Redundantes Casting
Die Umwandlungen im Ausdruck (bool)true == (int)1 sind technisch redundant. Der bool-Wert wird vom Compiler automatisch zu einem int heraufgestuft und der Vergleich funktioniert wie erwartet ohne die expliziten Umwandlungen.
Compilerkompatibilität
Die Äquivalenz zwischen ( bool)true und (int)1 wird durch den C-Standard garantiert. Daher ist es eine sichere Annahme für jeden C-Compiler, der sich an den Standard hält.
Fazit
In C können wir sicher davon ausgehen, dass (bool)wahr ist == (int)1 für alle C-Compiler, die dem C-Standard folgen. Die Typumwandlungen sind redundant und können weggelassen werden, ohne das Ergebnis des Vergleichs zu beeinflussen.
Das obige ist der detaillierte Inhalt vonIst „(bool)true' in C immer äquivalent zu „(int)1'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!