Heim >Backend-Entwicklung >C++ >Ist die Bool-zu-Int-Konvertierung in C und C portierbar?

Ist die Bool-zu-Int-Konvertierung in C und C portierbar?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 02:50:15165Durchsuche

Is Bool-to-Int Conversion Portable in C and C  ?

bool to int Conversion

Betrachten Sie den folgenden Codeausschnitt:

int x = 4 < 5;
assert(x == 1);

x = 4 > 5;
assert(x == 0);

Es stellt sich die Frage: Ist das eine Konvertierung? tragbar? Können wir garantieren, dass beide Behauptungen bestehen?

Antwort:

Ja, diese Konvertierung ist vollständig portierbar und kompatibel mit dem C-Standard. Die explizite Konvertierung von bool nach int ist in C implizit, wie in §4.7/4 des C 11- oder 14-Standards und §7.8/4 des C 17-Standards definiert.

Im Einzelnen heißt es im Standard: „Wenn der Quelltyp bool ist, wird der Wert false in Null und der Wert true in eins konvertiert.“

Daher im gegebenen Code:

  • 4 < 5 wird als wahr ausgewertet, was implizit in 1 konvertiert und in x gespeichert wird.
  • 4 > 5 wird als falsch ausgewertet, was implizit in 0 konvertiert und in x gespeichert wird.

Hinweis für C:

In C ist ein Bool-Datentyp nicht der Fall gegenwärtig. Allerdings führt C99 den Typ _Bool ein, bei dem es sich um ein Makro handelt, das in der Header-Datei stdbool.h definiert ist. Darüber hinaus sind „true“ und „false“ Makros, die sich zu den ganzzahligen Konstanten 1 bzw. 0 erweitern lassen.

Daher gilt in C:

  • 4 < 5 ergibt den ganzzahligen Wert 1.
  • 4 > 5 ergibt den ganzzahligen Wert 0.

Das obige ist der detaillierte Inhalt vonIst die Bool-zu-Int-Konvertierung in C und C portierbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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