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 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!