Maison > développement back-end > C++ > Dans quelle mesure la conversion booléenne en entier est-elle portable en C et C ?

Dans quelle mesure la conversion booléenne en entier est-elle portable en C et C ?

Barbara Streisand
Libérer: 2024-12-05 01:09:11
original
1050 Les gens l'ont consulté

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

Conversion bool en int : une plongée approfondie dans sa portabilité

Question originale :

Dans quelle mesure la conversion d'une valeur booléenne en entier est-elle portable ? Pouvons-nous être certains que les assertions suivantes sont transmises sur tous les systèmes ?

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

x = 4 > 5;
assert(x == 0);
Copier après la connexion

Réponse :

Oui, la conversion de bool en int est entièrement portable et conforme à les normes C et C.

Explication :

En C , la conversion de bool en int est implicite, comme spécifié dans la norme C (§4.7/4 de la norme C 11 ou 14, §7.8/4 de la norme C 17, §7.3.9/2 de la norme 20) . Selon ces normes :

  • Faux est converti en zéro.
  • Vrai est converti en un.

Dans notre exemple :

int x = 4 < 5;
Copier après la connexion

Se traduit exactement par :

int x = true;
Copier après la connexion

Puisque true est converti en un, le l’affirmation passera. De même, dans la deuxième assertion, false est converti en zéro, ce qui entraîne le succès de l'assertion.

Informations supplémentaires pour C :

Avant C99, C n'avait pas un type booléen. Cependant, C99 a introduit le type _Bool et la macro bool (définie dans le fichier d'en-tête stdbool.h) qui se développe en _Bool. Les macros true et false sont également définies dans le même fichier d'en-tête, où true se développe jusqu'à la constante entière 1 et false se développe jusqu'à la constante entière 0.

Selon le §7.16 de C99 :

#define bool _Bool
#define true 1
#define false 0
Copier après la connexion

Par conséquent, la conversion bool en int dans C99 et versions ultérieures se comporte de la même manière que C .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal