Why is cout Not Printing unsigned char Correctly?
In the provided code:
#include <iostream> #include <stdio.h> using namespace std; int main() { unsigned char a = 1; printf("%d", a); cout << a; }
The output includes a value that appears as garbage when printed using cout. This occurs because the ASCII character corresponding to the value of a (1) is non-printable. To verify this, use std::isprint as follows:
std::cout << std::isprint(a) << std::endl;
The result will be 0 (false), indicating that the character is non-printable.
To resolve this issue and have cout print "1", cast a to an unsigned integer:
cout << static_cast<unsigned>(a) << std::endl;
The above is the detailed content of Why Doesn\'t `cout` Print `unsigned char` Values Correctly?. For more information, please follow other related articles on the PHP Chinese website!