gpt4 book ai didi

c - int32、int、int32_t、int8 和 int8_t 之间的区别

转载 作者:太空狗 更新时间:2023-10-29 16:15:24 64 4
gpt4 key购买 nike

我最近在 C 程序中遇到数据类型 int32_t。我知道它存储 32 位,但 intint32 不是一样吗?

此外,我想在程序中使用char。我可以改用 int8_t 吗?有什么区别?

总结一下:C 中的 int32、int、int32_t、int8 和 int8_t 有什么区别?

最佳答案

int32int32_t 之间(同样在 int8int8_t 之间)区别非常简单: C 标准定义了 int8_tint32_t,但没有定义任何名为 int8int32 的东西——后者(如果它们存在的话)可能来自其他一些头文件或库(很可能早于 C99 中添加 int8_tint32_t)。

Plain int 与其他的有很大不同。其中 int8_tint32_t 每个都有指定的大小,int 可以是 >= 16 位的任何大小。在不同时期,16 位和 32 位都相当普遍(对于 64 位实现,它可能应该是 64 位)。

另一方面,int 保证出现在 C 的每个实现中,而 int8_tint32_t 则不是。不过,这对您是否重要可能还有待商榷。如果您在小型嵌入式系统和/或较旧的编译器上使用 C,则可能会出现问题。如果您主要将它与台式机/服务器计算机上的现代编译器一起使用,则可能不会。

糟糕——错过了关于 char 的部分。如果(且仅当)您希望保证整数类型的大小恰好为 8 位,则可以使用 int8_t 而不是 char。如果你想存储字符,你可能想使用 char 代替。它的大小可以变化(根据位数),但保证正好是一个字节。不过有一点奇怪:无法保证普通 char 是有符号的还是无符号的(许多编译器可以使它成为其中之一,具体取决于编译时标志)。如果您需要确保其已签名或未签名,则需要明确指定。

关于c - int32、int、int32_t、int8 和 int8_t 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515874/

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