Heim > Backend-Entwicklung > C++ > Wie portierbar ist die Umwandlung von Booleschen Werten in Ganzzahlen in C und C?

Wie portierbar ist die Umwandlung von Booleschen Werten in Ganzzahlen in C und C?

Barbara Streisand
Freigeben: 2024-12-05 01:09:11
Original
1013 Leute haben es durchsucht

How Portable is Boolean to Integer Conversion in C and C  ?

bool to int-Konvertierung: Ein tiefer Einblick in seine Portabilität

Ursprüngliche Frage:

Wie portierbar ist die Konvertierung eines Bool-Werts in einen Int-Wert? Können wir sicher sein, dass die folgenden Behauptungen auf allen Systemen gültig sind?

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

x = 4 > 5;
assert(x == 0);
Nach dem Login kopieren

Antwort:

Ja, die Konvertierung von bool in int ist vollständig portierbar und konform mit sowohl C- als auch C-Standards.

Erklärung:

In C , die Konvertierung von bool nach int erfolgt implizit, wie im C-Standard angegeben (§4.7/4 vom C 11- oder 14-Standard, §7.8/4 vom C 17-Standard, §7.3.9/2 vom 20-Standard). . Gemäß diesen Standards:

  • False wird in Null umgewandelt.
  • True wird in Eins umgewandelt.

In unserem Beispiel:

int x = 4 < 5;
Nach dem Login kopieren

Genau übersetzt:

int x = true;
Nach dem Login kopieren

Da true in eins konvertiert wird, ist die Behauptung wird vergehen. In ähnlicher Weise wird in der zweiten Behauptung „false“ in Null umgewandelt, was zu einer erfolgreichen Behauptung führt.

Zusätzliche Informationen für C:

Vor C99 gab es in C keine ein Bool-Typ. Mit C99 wurden jedoch der Typ _Bool und das Makro bool (definiert in der Header-Datei stdbool.h) eingeführt, das zu _Bool erweitert wird. Die Makros true und false sind ebenfalls in derselben Header-Datei definiert, wobei true zur Ganzzahlkonstante 1 und false zur Ganzzahlkonstante 0 erweitert wird.

Gemäß §7.16 von C99:

#define bool _Bool
#define true 1
#define false 0
Nach dem Login kopieren

Daher verhält sich die Bool-zu-Int-Konvertierung in C99 und später ähnlich wie in C.

Das obige ist der detaillierte Inhalt vonWie portierbar ist die Umwandlung von Booleschen Werten in Ganzzahlen in C und C?. 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