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
Libérer: 2024-11-29 11:53:10
original
709 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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