Maison >développement back-end >C++ >Pourquoi « cout » n'imprime-t-il pas correctement les valeurs « unsigned char » ?

Pourquoi « cout » n'imprime-t-il pas correctement les valeurs « unsigned char » ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 11:53:10670parcourir

Why Doesn't `cout` Print `unsigned char` Values Correctly?

Pourquoi cout n'imprime-t-il pas correctement les caractères non signés ?

Dans le code fourni :

#include <iostream>
#include <stdio.h>

using namespace std;

int main() {
    unsigned char a = 1;
    printf("%d", a);
    cout << a;
}

La sortie comprend une valeur qui apparaît comme un déchet lors de l'impression à l'aide de cout. Cela se produit car le caractère ASCII correspondant à la valeur de a (1) n'est pas imprimable. Pour vérifier cela, utilisez std::isprint comme suit :

std::cout << std::isprint(a) << std::endl;

Le résultat sera 0 (faux), indiquant que le caractère n'est pas imprimable.

Pour résoudre ce problème et avoir cout print "1", convertir a en un entier non signé :

cout << static_cast<unsigned>(a) << std::endl;

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!

Déclaration:
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