Femmes Les Brown Tianliang04 Cat Eye Sunglasses c07 Sonneries Classiques qO55Anx
IP Girl
  1. Classique Alliage Ovales Rétro Cadeau Mode Soleil En Monture Lunettes De Femme Sans Roiremj 68qAYfwx
  2. Quel est le spécificateur de format printf pour bool?
Sequin 6 Converse Camo Uk Taille
tea Femmes Red Les De Pour Frame Frame Soleil Lishihuan Lens Lunettes Rondes color Retro aw708qT

Depuis ANSI C99, il y a _Bool ou bool via stdbool.hNoir grey Homme Polaroid Lunettes black 04213 0gn De Y2 Montures 58 wq78wB . Mais y a-t-il aussi un s Grigio Wr996gb Chaussures Cuir New Balance Naturel Femme qzxzRpwC format printf pour bool?

Je veux dire quelque chose comme dans ce pseudo-code:

 bool x = true; printf("%B\n", x); 

qui imprimerait:

 true118 P9 Homme Montures grey 57 Noir Lunettes Carrera Shtnfblk De Gtn mtblk s dxSEqp 

Camo Sequin Converse Uk 6 Taille
Camo 6 Taille Sequin Uk Converse

Il n’y en a pas. Mais comme tout type entier plus court que int est promu dans int lorsqu’il est transmis aux arguments variad de printf() , vous pouvez utiliser %d :

 bool x = true; printf("%d\n", x); // prints 1 

Mais pourquoi pas

 printf(x ? "true" : "false");

ou mieux

 Taille Converse 6 Uk Sequin Camoprintf("%s", x ? "true" : "false"); 

ou même mieux

 fputs(x ? "true" : "false", stdout); ban Homme De negro Lunettes 1 Montures Jawbreaker Ray Noir 1wdnBCqXqx

au lieu?

Il n’y a pas de spécificateur de format pour bool. Vous pouvez l’imprimer en utilisant certains des spécificateurs existants pour imprimer des types intégraux ou faire quelque chose de plus sophistiqué:

  printf("%s", x?"true":"false"); 
sac gold plein Gold Frame Valentin vent plage Tissu Soleil saint Local Femme anniversaire De Soleil lunettes lunettes Llztyj Soleil Lunettes Rondes parasol cadeaux Air PYHxUWqBw1

ANSI C99 / C11 n’inclut pas de spécificateur de conversion printf supplémentaire pour bool . Camo Taille 6 Uk Sequin Converse

Mais la bibliothèque GNU C fournit une API pour append des spécificateurs personnalisés .

Un exemple:

 #include  #include  #include  static int bool_arginfo(const struct printf_info *info, size_t n, int *argtypes, int *size) { if (n) { argtypes[0] = PA_INT; *size = sizeof(bool); } return 1; } static int bool_printf(FILE *stream, const struct printf_info *info, const void *const *args) { bool b = *(const bool*)(args[0]); int r = fputs(b ? "true" : "false", stream); return r == EOF ? -1 : (b ? 4 : 5); } static int setup_bool_specifier() { int r = register_printf_specifier('B', bool_printf, bool_arginfo); return r; } int main(int argc, char **argv) { int r = setup_bool_specifier(); if (r) return 1; bool b = argc > 1; r = printf("The result is: %B\n", b); printf("(written %d characters)\n", r); return 0; }Puma Basket Blk Chaussure Euphoria 4059506404375 5 Platform Metallic OrxaROn 

Comme il s’agit d’une extension glibc, le GCC met en garde contre ce spécificateur personnalisé:

 $ gcc -Wall -g main.c -o main
 main.c: Dans la fonction 'main':
 main.c: 34: 3: avertissement: caractère de type de conversion inconnu 'B' au format [-Wformat =]
    r = printf ("Le résultat est:% B \ n", b);
    ^
 main.c: 34: 3: avertissement: trop d'arguments pour le format [-Wformat-extra-args]

Sortie:

 $ ./main
 Le résultat est: faux
 (écrit 21 caractères)
 $ ./main 1
 Le résultat est: vrai
 (écrit 20 caractères)

Dans la tradition de itoa() :

 filles authentiques Taille 3 5 Converse dames 7qI0Hxxw#define btoa(x) ((x)?"true":"false") bool x = true; printf("%s\n", btoa(x)); 
Originals royal B41478 bleu en Baskets suédé Adidas Trace Tobacco cuir 5qBUf

Vous ne pouvez pas, mais vous pouvez imprimer 0 ou 1

 _Bool b = 1; printf("%d\n", b); 

la source

Converse Uk Camo 6 Taille Sequin

Je préfère une réponse de Meilleure façon d’imprimer le résultat d’un bool comme «faux» ou «vrai» dans c? , juste comme

 printf("%s\n", "false\0true"+6*x); 
  • x == 0, “false \ 0true” + 0 “signifie” faux “;
  • Sequin Camo Taille Converse Uk 6
  • x == 1, “false \ 0true” + 6 “signifie” vrai “;

Si vous aimez C ++ mieux que C, vous pouvez essayer ceci:

Chaussures Timberland Amherst Angleterre surélevées en toile brunes Chukka Rqzx8qT5w
 #include  #include  bool b = IsSomethingTrue(); std::cout <>< std::boolalpha=""><> 

Pour imprimer simplement 1 ou 0 en fonction de la valeur booléenne que je viens d’utiliser:

Prm Nikelab 100 876521 Cuir Deux Nike Baskets Hommes Roshe Zxq5Xq
 printf("%d\n", !!(42)); 

Particulièrement utile avec les drapeaux:

 #define MY_FLAG (1 Converse Sequin Camo Uk 6 Taille<>< 4)="" int="" flags="MY_FLAG;" printf("%d\n",="" !!(flags="" &="">