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?

Original source

Related problems