cout not printing unsigned char

cout << a is printing a value which appears to be garbage to you. It is not garbage actually. It is just a non-printable ASCII character which is getting printed anyway. Note that ASCII character corresponding to 1 is non-printable. You can check whether a is printable or not using, std::isprint as:

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

It will print 0 (read: false) indicating the character is non-printable

Anyway, if you want your cout to print 1 also, then cast a to this:

cout << static_cast<unsigned>(a) << std::endl;

Leave a Comment