gpt4 book ai didi

c - 将 size_t 变量设置为 -1

转载 作者:行者123 更新时间:2023-12-04 10:46:35 27 4
gpt4 key购买 nike

如果我将 size_t 变量设置为 -1,例如:

size_t s = -1;

是否保证它将包含 s 可以容纳的最大值?

例如,如果 sizeof(size_t) 是 4 个字节,我可以假设 s0xFFFFFFFF 吗?

作为补充信息:我需要这个来实现一个集合,我打算在其中使用 -1 作为“项目不存在”。同时,我不想牺牲 0,也不想使用 int

最佳答案

是的,它保证成为最大值,因为size_t始终是无符号整数类型,并且无符号整数类型保证包装/使用模运算。作为C11 6.3.1.3p2表示将整数( -1int 类型的常量)转换为无符号整数类型。

[...] if the new type is unsigned, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in the range of the new type.


然而,sizeof(size_t) == 4并不意味着它有 32 位,因为 sizeof以字节为单位告诉大小 - 即 char s - 和一个 charCHAR_BIT位。即使sizeof(size_t) * CHAR_BIT == 32 , size_t仍然可以有少于 32 个值位(其余将是填充位)。


附言我建议您使用 SIZE_MAX 来自 <stdint.h> 相反。

关于c - 将 size_t 变量设置为 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379143/

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