I have a weird problem about working with integers in C++.
I wrote a simple program that sets a value to a variable and then prints it, but it is not working as expected.
My program has only two lines of code:
uint8_t aa = 5;
cout << "value is " << aa << endl;
The output of this program is value is
I.e., it prints blank for aa
.
When I change uint8_t
to uint16_t
the above code works like a charm.
I use Ubuntu 12.04 (Precise Pangolin), 64-bit, and my compiler version is:
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
The
operator<<()
overload betweenistream
andchar
is a non-member function. You can explicitly use the member function to treat achar
(or auint8_t
) as anint
.Output:
It's because the output operator treats the
uint8_t
like achar
(uint8_t
is usually just an alias forunsigned char
), so it prints the character with the ASCII code (which is the most common character encoding system)5
.See e.g. this reference.