C中基本数据类型的字节大小是多少

时间:2013-09-04 01:29:41

标签: c

我有一个非常基本的问题,我无法找到具体的答案

默认情况下,C中的int,short,long的大小是多少?当我说int a时,是否默认签名?

同样的无符号值的大小是多少。即unsigned int,unsigned short等?

我正在使用mac os x和xcode来编译/运行。我尝试使用sizeof(int)并为“int”和“unsigned int”返回4个字节。签名和未签名之间的大小差异是多少?

4 个答案:

答案 0 :(得分:1)

它总是依赖于平台和实现。有时某些类型在一个实现上的大小相同,而在另一个实现上则不同。 欢迎第一步仔细开发。

答案 1 :(得分:1)

有符号和无符号值具有相同的大小。在有符号形式中,最重要的位是符号,而在无符号形式中,额外位允许类型保持更大的值。例如,有符号类型的32位可以保存 - (2 ^ 31)到2 ^ 31 - 1的值,无符号类型的32位可以保存0到2 ^ 32 - 1的值。

每种类型的大小取决于系统。如果您需要一个特定大小的变量,您可以使用stdint.h中的类型,因此int32_t将始终具有32位,例如。

答案 2 :(得分:0)

签名和无符号整数的大小相同。高位是符号位。

默认情况下

int是签名的。

short通常是2个字节,int通常是4. long通常是4或8。 所有这些都是依赖于平台的,您应该使用sizeof()来发现它们。

答案 3 :(得分:0)

今天的大多数系统,包括英特尔系统,都使用two's complement来表示有符号整数。 因此,通常会得到sizeof(unsigned int) == sizeof(signed int)

某种类型的位数仅由规范松散定义,因此主要取决于编译器/平台。有时int可能是16位,其他时候是32位。阅读编译器的文档以获取更多信息(例如gcc),并在编写可移植代码时牢记这一点。