以下代码
#include <sstream>
#include <iostream>
int main() {
uint8_t result = 0;
std::stringstream ss("2B");
ss << std::hex;
ss >> result;
std::cout << result;
return 0;
}
在GCC 6.3中输出2
,在macOS上输出48
和clang。为什么?正确的结果是43,显然它适合uint8_t
甚至int8_t
。但是,将uint8_t
替换为uint16_t
会导致43
。