C++ 为什么std::cout不能为我的int8\t编号打印正确的值?
我有点像:C++ 为什么std::cout不能为我的int8\t编号打印正确的值?,c++,gdb,cout,C++,Gdb,Cout,我有点像: int8_t value; value = -27; std::cout << value << std::endl; int8\t值; 数值=-27; 这是因为int8\u t是有符号字符的同义词 因此,该值将显示为char值 要强制int显示,可以使用 std::cout << (int) 'a' << std::endl; std::cout,因为int8\u t与signed char相同,并且流不会将char视为数字。转
int8_t value;
value = -27;
std::cout << value << std::endl;
int8\t值;
数值=-27;
这是因为int8\u t是有符号字符的同义词
因此,该值将显示为char值
要强制int显示,可以使用
std::cout << (int) 'a' << std::endl;
std::cout,因为int8\u t
与signed char
相同,并且流不会将char
视为数字。转换为例如int16\t
std::cout << static_cast<int16_t>(value) << std::endl;
std::cout如果使用'char value;'相反,它打印相同的内容。int8\u t来自C标准库,因此可能是cout没有为它做好准备(或者它只是被typedefd为char)。最有可能的是int8\u t
typedef char int8_t
因此,当您使用流式输出“值”时,将打印底层类型(字符)
打印“整数”的一种解决方案是在流式传输int8\t之前键入强制转换值:
std::cout << static_cast<int>(value) << std::endl;
std::cout因为int16\t的类型可能不是整数(正如流所理解的那样),也许您应该使用int
。使用@phuclv非常酷,非常适合模板代码
std::cout << static_cast<int>(value) << std::endl;