为什么 (int8_t)和static_cast<uint8_t>()都无法将 char 转为整形而(int)可以呢?

为什么 (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;
}
阅读 2k
1 个回答

int8_t 跟 uint8_t 通常就是 char / signed char / unsigned char 的 typedef。

operator << 对这三种类型都是按照字符输出的,而不是整数。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题