Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么std::cout不能为我的int8\t编号打印正确的值?_C++_Gdb_Cout - Fatal编程技术网

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;