Maison >développement back-end >C++ >Pourquoi « cout » n'imprime-t-il pas correctement les valeurs de caractères non signés ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-27 18:07:13125parcourir

Why Doesn't `cout` Print Unsigned Char Values Correctly?

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

Dans l'extrait de code :

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

using namespace std;

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

cout est en train d'imprimer une valeur qui semble être une poubelle. Cependant, ce n’est pas vraiment une poubelle. Il s'agit d'un caractère ASCII non imprimable en cours d'impression. Notez que le caractère ASCII correspondant à 1 n'est pas imprimable.

Vous pouvez le vérifier en utilisant std::isprint:

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

Cela imprimera 0 (faux), indiquant que le caractère n'est pas imprimable.

Pour forcer cout à imprimer 1, convertissez a en un non signé entier :

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