【发布时间】:2011-03-14 14:54:48
【问题描述】:
我如何知道我的计算机中所有数据类型的大小?
【问题讨论】:
-
说什么?可能想稍微改一下这个问题。这些数据类型在哪里?将在其中使用它的代码示例?通常,
sizeof X应该返回类型X的大小。 -
@Mechko:该语法适用于变量
X。如果X是一个类型,你应该使用sizeof(X)。
我如何知道我的计算机中所有数据类型的大小?
【问题讨论】:
sizeof X 应该返回类型 X 的大小。
X。如果X 是一个类型,你应该使用sizeof(X)。
下面的程序应该可以解决原始类型的问题:
#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。
<code> 和<br> 标签和&gt; 实体,下次您只需键入代码,选择它并按 ctrl-k 格式化它(或单击文本区域上方的编辑工具栏上的代码图标(带有 1 和 0)。基本上,如果代码块用一个空行填充并缩进4个空格,它就会出现格式化。
使用sizeof 获取变量类型的大小(以字节为单位)。
例如:#include <stdint.h>sizeof(int32_t) 将返回 4sizeof(char) 将返回 1int64_t a;sizeof a; 将返回 8
见http://publications.gbdirect.co.uk/c_book/chapter5/sizeof_and_malloc.html
【讨论】:
int32_t 和 int64_t 而不是 int32 和 int64。 -1 用于在示例中使用一些奇怪的系统特定类型而不是标准类型。
#include。
sizeof(T) 会给你传递给它的任何类型的大小。如果您试图找出在特定程序中使用或定义的所有数据类型的大小,您将无法做到——C 在编译时不会维护该级别的信息。
【讨论】:
您可以将sizeof 应用于您需要知道其大小的每种类型,然后您可以打印结果。
【讨论】:
int 和 long 可能具有相同的大小。没有规定说long 必须能够表示比int 更大的值范围,只是它必须能够表示至少int 可以表示的范围。跨度>
short 和 int 必须至少为 2 个字节,long 必须至少为 4 个字节,并且 short int long
int 的最小允许最大值为 32767,但 long 允许的最小最大值为 2147483647。int 是允许的与long 一样大,但这并不意味着long 可以与int 一样小。
int 和long 的大小可能相同(在这种情况下,int 的大小至少需要为 32 位)。
int 可能与long 或short 的大小相同。 int 必须至少 16 字节宽(它必须能够表示至少 [-32767,32767] 范围),但可能(并且通常)更宽。