uintX_t和intX_t类型的打印保证

时间:2019-02-24 10:31:19

标签: c++ c++11 c++17

我想知道是否对变量使用uint16_t类型并想使用std::cout <<在屏幕上打印出来,是否将其打印为数字而不是{{1} }。我在一些教程网站上读到,charuint8_t所打印的内容不能保证为字符或数字。但是,我找不到标准中的任何子句或引用。我是否需要始终强制转换以确保获得所有上述类型的期望输出?

1 个答案:

答案 0 :(得分:1)

如果实现中定义了Py_INCREF(first); replace_field(&self->first, first); ,则uint8_t不能是uint16_t。原因是char被定义为最小的可寻址值; char明确为1。

由于要求这些可选尺寸类型精确地等于指定的尺寸,因此sizeof(char)必须大于sizeof(uint16_t)。而且由于sizeof(uint8_t)不能小于sizeof(uint8_t),所以sizeof(char)不能为1。因此它不能为sizeof(uint16_t)

当然,如果char未定义 但定义了uint8_t,则所有投注均无效。但是,如果您的代码已经假设uint16_tuint8_t都存在,那么您可以同样假设uint16_t不是uint16_t