Why is cout Not Printing Unsigned Char Correctly?
In the code snippet:
#include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a=1; printf("%d", a); cout<<a; }
cout is printing a value that appears to be garbage. However, this is not actually garbage. It is a non-printable ASCII character that is being printed. Note that the ASCII character corresponding to 1 is non-printable.
You can verify this using std::isprint:
std::cout << std::isprint(a) << std::endl;
This will print 0 (false), indicating that the character is non-printable.
To force cout to 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!