gpt4 book ai didi

c - int 与 size_t 与 long

转载 作者:行者123 更新时间:2023-12-03 07:52:22 25 4
gpt4 key购买 nike

我最近看到很多人说你应该使用 size_t 而不是 int。但有什么区别呢?总是更好吗?或者有int的情况和size_t的情况吗?或者也许 size_tlong 类似?什么时候应该使用int,什么时候应该使用size_t,什么时候应该使用long?

最佳答案

主要原因是自文档化代码。 size_t 专门用于描述事物的大小。

但是使用 size_t 相对于 int 也有一些实际优势:

  • 数组/对象大小始终为无符号且正数,因此应由无符号类型表示。使用负值作为数组大小始终是一个错误。使用负值作为数组索引也是有问题的,因为它很难阅读,可能也是一个错误。

  • int 在某些情况下,当它不足以容纳请求的大小时,可能会溢出。 size_t 保证至少足够大以包含最大支持对象的大小。

  • int 如果与同一表达式中的较大操作数混合,可能会受到隐式提升的影响。

  • int 如果用于表示地址或用于存储指针算术结果,则会出现进一步的问题。这里还有其他更合适的类型,分别是 uintptr_tptrdiff_t

因此,

size_t 提供了与 sizeof 运算符以及各种标准库函数(例如 strlen)更好的兼容性。大多数情况下,当将使用 int 编写的草率代码移植到 64 位系统时,这些问题就会暴露出来。

但是 size_t 也不是没有问题,因为它的大小未知。在某些场景(例如与硬件相关的编程)中,stdint.h 中的固定宽度类型可能比 size_t 更适合使用,否则您可能会面临获得过于宽泛的类型的风险。大。

一些旧的 C 库的合规性也很差,无法正确支持 printf/scanf 系列函数的 %zu

关于c - int 与 size_t 与 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76867517/

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