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