我已经声明了一个uint8变量,当打印出它的值时,我会得到笑脸和白色空格。它不应该显示整数值吗?
答案 0 :(得分:13)
我打赌uint8
是系统标头中typedef
的{{1}}。然后unsigned char
将打印符号而不是整数值,其中std::cout << u
的类型为u
。
尝试
uint8
或
std::cout << static_cast< int >( u );
打印数值。
答案 1 :(得分:0)
这一切都取决于你如何打印出来的价值。对于cout,请尝试cout << (long unsigned int)var;
,对于printf
,您可以尝试使用%lu
格式说明符。但是,就像usta提到的那样,uint8
可能被定义或者将typedef为其他东西,因为它不是ISO C ++类型。还有可能uint8
是unsigned long int
(通用)或unsigned __int64
(特定于MS平台)的类型定义,而MSVC ++编译器只是进行了错误的隐式转换。在不知道uint8
被定义为什么的情况下,很难说清楚。