cstdint
typedef 绝对有可能绑定(bind)到 char 变量。例如,很可能uint_least8_t
绑定(bind)到unsigned char
,而int_least8_t
绑定(bind)到signed char
。
标准是否保证类似的事情不会发生在 size_t
或类似的类型上?或者至少存在这样的类型将绑定(bind)到某些 char 类型(例如 unsigned char
或什至 wchar_t
)的纯粹理论上的可能性?
最佳答案
我们所知道的 std::size_t
是:
The type size_t is an implementation-defined unsigned integer type that is large enough to contain the size in bytes of any object.
如果unsigned char
满足这个条件,它可以用作std::size_t
.
但是,这种担忧纯粹是理论上的,因为没有一个真正的平台(据我所知) (好吧,那是错误的)一个 char 类型被用作 unsigned char
足够宽了std::size_t
等等。
如果你 super 偏执,你可以将值提升到至少int
与一元 +
:
std::cout << +vector.size();
即使大小类型是字符类型,这也会打印数字。
对于阅读,您可以使用 std::common_type<unsigned int, std::size_t>::type
类型的变量(可能通过 typedef
)然后在 sizeof(int) > sizeof(std::size_t)
的情况下进行边界检查.
关于c++ - 是否保证 size_t、vector::size_type 等 typedef 不会绑定(bind)到 char 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915434/