gpt4 book ai didi

c - 具有定义宽度的整数类型

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

我正在阅读 C in a Nuttshell 遇到了一个主题具有精确宽度的整数类型 (C99) enter image description here

谁能解释一下这个数据类型有什么用

我在哪里可以在代码中使用这个数据类型

为什么要引入这种数据类型

我是C编程初学者

最佳答案

C 现在是一种相当古老的语言(自 1970 年代初以来),兼容性一直是一个问题。在过去,整数的大小在不同的架构上可能不同。因此 sizeof(int) 仍然是一个实现细节。标准要求:

  • char 是最小的内存单元,至少有 8 位 - 所有其他类型的大小都是 char
  • 大小的倍数
  • short 至少有 16 位
  • int 至少和 short 一样大并且至少有 16 位
  • long 至少与 int 一样大并且至少有 32 位
  • long long 至少和 long 一样大并且至少有 64 位

但是例如,您无法知道什么类型最适合处理 32 位值。这就是发明具有精确(或最小)宽度的整数类型的原因。

出于可移植性的原因,C 语言不对底层机器做任何假设,这就是为什么具有精确 宽度的类型是可选的。也就是说,它们存在于所有常见架构中。


引用:C99 的草案 n1256 和 C11 的 n1570 在 5.2.4.2.1 整数类型的大小中给出了实现可以替换为更大值的最小大小

The values given below shall be replaced by constant expressions suitable for use in #if preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, the following shall be replaced by expressions that have the same type as would an expression that is an object of the corresponding type converted according to the integer promotions. Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

  • number of bits for smallest object that is not a bit-field (byte)
    CHAR_BIT 8

...

  • maximum value for an object of type unsigned short int
    USHRT_MAX 65535 // 216 - 1

...

  • maximum value for an object of type unsigned int
    UINT_MAX 65535 // 216 - 1

...

  • maximum value for an object of type unsigned long int
    ULONG_MAX 4294967295 // 232 - 1

...

  • maximum value for an object of type unsigned long long int
    ULLONG_MAX 18446744073709551615 // 264 - 1

关于c - 具有定义宽度的整数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405796/

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