我有一个关于在 C++ 中使用整数的奇怪问题。
我编写了一个简单的程序,它为变量设置一个值,然后打印它,但它没有按预期工作。
我的程序只有两行代码:
uint8_t aa = 5; cout << "value is " << aa << endl;
这个程序的输出是value is
value is
即,它为aa.
aa
当我更改uint8_t为uint16_t上面的代码时,它就像一个魅力。
uint8_t
uint16_t
我用的是Ubuntu 12.04(Precise Pangolin),64位,我的编译器版本是:
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
它并没有真正打印空白,但很可能是值为 5 的 ASCII 字符,它是不可打印的(或不可见的)。有许多不可见的 ASCII 字符代码,其中大多数低于值 32,实际上是空白。
您必须转换aa为unsigned int输出数值,因为ostream& operator<<(ostream&, unsigned char)尝试输出可见字符值。
unsigned int
ostream& operator<<(ostream&, unsigned char)
uint8_t aa=5; cout << "value is " << unsigned(aa) << endl;