Können Bool und Int in C über Compiler hinweg gleich sein?
In C müssen Programmierer häufig Werte verschiedener Typen vergleichen, z als bool und int. Es stellt sich häufig die Frage: Können wir mit Sicherheit davon ausgehen, dass (bool)true für jeden C-Compiler gleich (int)1 ist?
Antwort: Ja, aber Casts sind redundant
Die Umwandlungen im Ausdruck (bool)true == (int)1 sind unnötig. C stuft den Bool-Wert während des Vergleichs automatisch zu einem Int hoch. Diese Promotion führt zum Wert 1.
Das Verhalten wird durch den C-Standard in [conv.integral] / 4 definiert:
"Wenn der Quelltyp bool ist... wird true in eins konvertiert. „
Daher ist der Ausdruck true == 1 äquivalent zu 1 == 1, was ein wahrer Vergleich ist. Dieses Verhalten ist bei allen C-Compilern konsistent.
Das obige ist der detaillierte Inhalt vonKönnen „wahr' und „1' in C-Vergleichen zwischen verschiedenen Compilern immer als gleich betrachtet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!