我如何知道计算机中所有数据类型的大小?
#include <stdio.h>
int main()
{
printf("sizeof(char) = %d\n", sizeof(char));
printf("sizeof(short) = %d\n", sizeof(short));
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(long) = %d\n", sizeof(long));
printf("sizeof(long long) = %d\n", sizeof(long long));
printf("sizeof(float) = %d\n", sizeof(float));
printf("sizeof(double) = %d\n", sizeof(double));
printf("sizeof(long double) = %d\n", sizeof(long double));
return 0;
}
这将打印出类型使用的“字节”数量,根据定义sizeof(char) == 1
。1表示多少位(即有多少个比特)是由实现特定并且可能取决于底层硬件。例如,一些机器具有7位字节,而另一些则具有10或12位字节。
CHAR_BIT
至少应为8。POSIX要求CHAR_BIT
必须恰好为8。 - R.. GitHub STOP HELPING ICE您可以对每个需要知道大小的类型应用sizeof
,然后打印结果。
int
和long
的大小可能相同。没有规定long
必须能够表示比int
更大范围的值,只要它至少能够表示int
可表示的范围即可。 - James McNellisshort
和int
至少必须为2个字节,而long
必须至少为4个字节,并且short
< int
< long
。 - Chris Lutzint
的最小允许最大值为32767,但long
的最小允许最大值为2147483647。int
可以与long
一样大,但这并不意味着long
可以和int
一样小。 - dreamlaxint
和long
可能具有相同的大小(在这种情况下,int
至少需要32位大小)。 - James McNellisint
可能与 long
或 short
大小相同。int
至少应该有 16 个字节宽度(最小必须能够表示范围[-32767,32767]),但可能会更宽(通常是更宽)。 - John Bodesizeof(T)
会返回传递给它的任何类型的大小。如果你想查找特定程序中使用或定义的所有数据类型的大小,那么你将无法做到这一点--C编译时不会维护那个层次的信息。
sizeof
获取变量类型的大小(以字节为单位)。
例如:
#include <stdint.h>
sizeof(int32_t)
将返回4
sizeof(char)
将返回1
int64_t a;
sizeof a;
将返回8int32_t
和 int64_t
而不是 int32
和 int64
。在示例中使用一些奇怪的系统特定类型而不是标准类型会被扣除 1 分。 - R.. GitHub STOP HELPING ICE#include
。 - Larry Wang
sizeof X
应该返回类型X
的大小。 - Ritwik BoseX
的。如果X
是一个类型,你应该使用sizeof(X)
。 - Larry Wang