Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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++ 在C+中使用std::cout打印uint8_t变量+;_C++_Cout - Fatal编程技术网

C++ 在C+中使用std::cout打印uint8_t变量+;

C++ 在C+中使用std::cout打印uint8_t变量+;,c++,cout,C++,Cout,在下面的代码中,std::cout似乎没有正确打印uint8\t类型的变量 int main() { uint8_t var = 16; std::cout << "value: " << var << std::endl; } 我对类似的uintX\t类型没有问题 我知道我在这里遗漏了一些东西,但我不知道它是什么。uint8\u t映射到大多数系统上的无符号字符。结果,将调用将16解释为不可打印字符的覆盖。将强制转换添加到int以查看数值:

在下面的代码中,
std::cout
似乎没有正确打印uint8\t类型的变量

int main() {
    uint8_t var = 16;
    std::cout << "value: " << var << std::endl;
}
我对类似的uintX\t类型没有问题


我知道我在这里遗漏了一些东西,但我不知道它是什么。

uint8\u t
映射到大多数系统上的
无符号字符。结果,将调用将
16
解释为不可打印字符的覆盖。将强制转换添加到
int
以查看数值:

std::cout << "value: " << (int)var << std::endl;

我怀疑这种隐式的字符转换正在进行。但是为什么呢?类型名uint8_t不建议它保持int形式吗?@narengi
uint8_t
只是一个
typedef
,而不是一个内置的基本类型。正因为如此,编译器无法区分对实际基元类型的重写和对
typedef
-ed类型的重写:这是编译器的同一个函数
typedef无符号整数uint16
typedef无符号长整数uint32
typedef无符号长整数uint64
@narengi:
[u]intN\t
类型所使用的预定义类型因系统而异。这就是为什么存在
[u]intN\t
类型,因为预定义类型的大小不同
uint16\u t
只有在
int
为16位时才会被定义为
unsigned int
,这对于托管系统来说是很少见的。@KeithThompson我明白你的意思。但我得到的信息是,[u]intX\t类型变量只是typedef,由各种内置类型定义,从char到int和long int等,不一定被视为整数类型。但是谢谢你的澄清。
std::cout << "value: " << (int)var << std::endl;