short,int,long,float,double long,double,char的大小

时间:2013-09-20 12:46:22

标签: c sizeof

我想找出(short / int / long / float / double / long double / char)大小,所以我写了这段代码:

printf("short\t\t%d\n", sizeof(short));    
printf("int\t\t%d\n", sizeof(int));
printf("long\t\t%d\n", sizeof(long));
printf("float\t\t%d\n", sizeof(float));
printf("double\t\t%d\n", sizeof(double));  
printf("long double\t%d\n", sizeof(long double));    
printf("char\t\t%d\n", sizeof(char));   

BUT 输出是:

type            bytes
short           512
int             512
long            1024
float           1024
double          1024
long double     1024
char            256

为什么字节数这么大?

不应该是2,8,......?

2 个答案:

答案 0 :(得分:7)

sizeof评估为size_t,而不是int。所以%d不合适;你正在调用未定义的行为。

要正确打印size_t类型的数据,我建议例如printf("%zu\n", sizeof(float));等等。

答案 1 :(得分:-1)

使用:格式说明符long unsigned int。它会工作正常。 例如: printf(“sizeof(long double)=% lu \ n”,sizeof(long double));

答:16