cout not printing unsigned char
c++, cout, printf, unsigned-char
Solution
`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;
Problem
I am working on below code: ``` #include<iostream> #include<stdio.h> using namespace std; main() { unsigned char a; a=1; printf("%d", a); cout<<a; } ``` It is printing 1 and some garbage. Why `cout` is behaving so?