【发布时间】:2018-05-22 05:50:47
【问题描述】:
因为 C 语言在内部使用 char 作为整数(存储对应的 ASCII)。对于内部计算,我们可以使用有符号和无符号字符。
除此之外,还有什么用处??
【问题讨论】:
因为 C 语言在内部使用 char 作为整数(存储对应的 ASCII)。对于内部计算,我们可以使用有符号和无符号字符。
除此之外,还有什么用处??
【问题讨论】:
signed 和 unsigned char 首先是小整数。您是否需要存储大量的小数字(在 [-127, +127]¹ 或 [0, 255] 范围内)?与几乎任何其他类型相比,您可以使用 signed 或 unsigned 字符数组并节省内存。这就是为例如所做的事情。图像 - 灰度图像通常存储为 unsigned char 的数组(而 RGB 图像通常存储为 3 个 unsigned char 组件的数组)。
char 的第二种用法是用于字符串,您可能已经看到了;请注意,char 是与signed char 和unsigned char 不同的类型,并且它的签名是实现定义的。这在许多情况下是愚蠢和不方便的 - 并且会导致可悲的事情,例如在调用 toupper/isupper 系列的函数时强制转换为 unsigned char。
最后,char & co。被定义为 C 抽象机的“底层存储”。 sizeof(char) == 1 根据定义,任何类型都可以通过 (signed|unsigned)? char 指针来别名,以访问其底层位表示。
signed char 的最小范围,因为它仍然允许符号和幅度表示;更现实的是,在本世纪任何现实世界的机器上,它至少会是 [-128, 127]。【讨论】:
size_t也有最大值