uint8_t can't be printed with cout
It doesn't really print a blank, but most probably the ASCII character with value 5, which is non-printable (or invisible). There's a number of invisible ASCII character codes, most of them below value 32, which is the blank actually.
You have to convert aa
to unsigned int
to output the numeric value, since ostream& operator<<(ostream&, unsigned char)
tries to output the visible character value.
uint8_t aa=5;
cout << "value is " << unsigned(aa) << endl;
uint8_t
will most likely be a typedef
for unsigned char
. The ostream
class has a special overload for unsigned char
, i.e. it prints the character with the number 5, which is non-printable, hence the empty space.
Adding a unary + operator before the variable of any primitive data type will give printable numerical value instead of ASCII character(in case of char type).
uint8_t aa = 5;
cout<<"value is "<< +aa <<endl; // value is 5