-2

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

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

同样的无符号值的大小是多少。即无符号整数,无符号短等?

我正在使用 mac os x 和 xcode 来编译/运行。我尝试执行 sizeof (int),它为“int”和“unsigned int”返回 4 个字节。有符号和无符号的大小有什么区别?

4

4 回答 4

1

它始终取决于平台和实现。有时某些类型在一个实现上的大小相同,而在另一个实现上则不同。欢迎来到精心开发的第一步。

于 2013-09-04T01:32:48.417 回答
1

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

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

于 2013-09-04T01:44:47.130 回答
0

有符号整数和无符号整数大小相同。高位是符号位。

int 默认是有符号的。

shorts 通常是 2 个字节,int 通常是 4。longs 通常是 4 或 8。所有这些都取决于平台,您应该使用 sizeof() 来发现它们。

于 2013-09-04T01:34:12.057 回答
0

今天的大多数系统,包括那些 Intel 系统,都使用二进制补码来表示有符号整数。因此通常你得到sizeof(unsigned int) == sizeof(signed int).

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

于 2013-09-04T01:34:36.377 回答