Heim > Backend-Entwicklung > C++ > Können „wahr' und „1' in C-Vergleichen zwischen verschiedenen Compilern immer als gleich betrachtet werden?

Können „wahr' und „1' in C-Vergleichen zwischen verschiedenen Compilern immer als gleich betrachtet werden?

Susan Sarandon
Freigeben: 2024-11-30 01:50:10
Original
232 Leute haben es durchsucht

Can `true` and `1` Always Be Considered Equal in C   Comparisons Across Different Compilers?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage