我想找出(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,......?
答案 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