为什么 (int8_t)和static_cast<uint8_t>()都无法将 char 转为整形而(int)可以呢?
#include<sstream>
#include<cstdint>
int main() {
std::stringstream ss;
char pchar = 'a';
ss << (int)pchar; //输出97
ss << (int8_t)pchar; //输出 a
ss << static_cast<uint8_t>(pchar); //输出 a
printf("%s\n", ss.str().c_str());
return 0;
}
int8_t 跟 uint8_t 通常就是 char / signed char / unsigned char 的 typedef。
operator << 对这三种类型都是按照字符输出的,而不是整数。