gpt4 book ai didi

c++ - sizeof(size_t) 可以小于 sizeof(int) 吗?

转载 作者:行者123 更新时间:2023-12-04 22:17:54 25 4
gpt4 key购买 nike

sizeof(size_t) 可以小于 sizeof(int) 吗?

C 和/或 C++ 标准是否保证使用 unsigned int 进行数组索引总是安全的?

最佳答案

是的,原则上 sizeof(size_t) 可以小于 sizeof(int) 。我不知道有任何实现是正确的,而且很可能没有。我可以想象一个 64 位 int 和 32 位 size_t 的实现。

但是用 unsigned int 索引一个数组是安全的——只要索引的值在数组长度规定的范围内。 [] 运算符的参数只需要是一个整数。它不会转换为 size_t 。它是根据指针算术定义的,其中 + 运算符有一个参数是指针,另一个参数是任何整数类型。

如果 unsigned intsize_t 宽,那么超过 unsigned intSIZE_MAX 索引值几乎肯定会导致问题,因为数组不是那么大。在 C++14 及更高版本中,明确禁止定义大于 SIZE_MAX 字节的类型(3.9.2 [compound.types] 第 2 段)。在早期版本的 C++ 和所有版本的 C 中,并没有明确禁止它,但任何理智的实现都不太可能允许它。

关于c++ - sizeof(size_t) 可以小于 sizeof(int) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59833124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com