int32,int,int32_t,int8和int8_t之间的区别

我最近在C程序中遇到了int32_t数据types。 我知道它存储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不是。 这可能是开放的问题,这是否对你很重要。 如果您在小型embedded式系统和/或较老的编译器上使用C,则可能会出现问题。 如果您主要在桌面/服务器机器上使用现代编译器,则可能不会。

糟糕 – 错过了关于char的部分。 你会使用int8_t而不是字符,如果(只有),如果你想一个整数types保证是正好8位的大小。 如果你想存储字符,你可能想用char来代替。 它的大小可能会有所不同(以位数为单位),但保证只有一个字节。 但是有一点奇怪:不能保证一个简单的char是有符号的还是无符号的(许多编译器可以根据编译时间标志来设置它)。 如果您需要确保它是有符号的还是无符号的,则需要明确指定。

_t数据types是stdint.h头文件中的typedeftypes,而int是构build的基本数据types。 这使得_t仅在stdint.h存在时才可用。 int另一方面保证存在。