gpt4 book ai didi

c++ - c/c++ 中类型的大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:59 25 4
gpt4 key购买 nike

我最近问了一个问题here关于 char 的大小。看着我的问题,这让我想到了另一个问题:
charsizeof(int) 中的位数是 CPU 相关的、操作系统相关的、编译器相关的,还是上述的某种组合?谁决定我的编译器中的 sizeof(int) 是 4?

编辑: 让我解释一下:例如,我在 64 位系统上的编译器使用 32 位 int。这是由编译器或操作系统设置为这个(确切的)操作系统/平台组合上所有编译器的标准 int 吗? char = 8 位怎么样?操作系统可以决定它要使用 16 位字符吗?编译器可以吗?

最佳答案

根据所有 ISO C 标准,所有尺寸均以 char 尺寸的倍数测量.这意味着,根据定义 sizeof(char) == 1 . char 的大小in bits 由宏定义 CHAR_BIT<limits.h> (或 <climits> )。 char 的最小尺寸是8位。

额外的类型限制是:

sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)

int必须能够表示 -32767 到 +32767 - 例如它必须至少有 16 位宽。

添加了 C99 long long int , 谁的尺寸大于或等于 long int .

其余部分取决于实现。这意味着所讨论的 C 编译器可以选择数字的确切大小。


C 编译器如何选择这些大小?

大多数编译器都遵循一些通用约定。 long通常选择与机器字一样大。在 64 位机器上 CHAR_BIT == 8 (这几乎总是如此,所以我将假设对于这个答案的其余部分)这意味着 sizeof(long) == 8 .在 32 位机器上这意味着 sizeof(long) == 4 .

int几乎总是 32 位宽。

long long int通常是 64 位宽。

关于c++ - c/c++ 中类型的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600536/

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