gpt4 book ai didi

c - 当 sizeof(char) != 1 时,C 中的字节精度指针算法

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:24 24 4
gpt4 key购买 nike

如何以单字节精度可移植地执行指针运算?

请记住:

  • char 在所有平台上都不是 1 个字节
  • sizeof(void) == 1 仅在 GCC 中作为扩展可用
  • 虽然某些平台可能有指针取消引用指针对齐限制,但算法可能仍需要比最小基本 POD 类型的大小更细的粒度

最佳答案

您的假设是有缺陷的 - sizeof(char)定义在所有地方都是 1。

来自C99 standard (TC3) ,在第 6.5.3.4 节(“sizeof 运算符”)中:

(第 2 段)

The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type.

(第 3 段)

When applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1.

当把这些放在一起时,很明显,在 C 中,无论 char 有多大,该大小都是一个“字节”(即使在某些给定平台上超过 8 位)。

char 因此是最小的可寻址类型。如果您需要以小于 char 的单位寻址,您唯一的选择是一次读取一个 char 并使用按位运算符屏蔽掉 的部分>char 你想要的。

关于c - 当 sizeof(char) != 1 时,C 中的字节精度指针算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864956/

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