我突然在C ++的字符串流中玩耍,突然发现下面的代码无法按预期运行:
int main()
{
uint8_t foo = 82;
std::cout << "0x" << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << foo << std::endl;
}
打印出:0x000R
(预期为0x0052
)
请注意,当我将foo的类型更改为uint16_t或uint32_t时,输出是正确的。
谁可以向我解释为什么代码如此表现?那是个错误吗?