【发布时间】:2019-12-10 18:49:48
【问题描述】:
#include <stdio.h>
int main() {
char a = 'A';
int b = 90000;
float c = 6.5;
printf("%d ",sizeof(6.5));
printf("%d ",sizeof(90000));
printf("%d ",sizeof('A'));
printf("%d ",sizeof(c));
printf("%d ",sizeof(b));
printf("%d",sizeof(a));
return 0;
}
输出是:
8 4 4 4 4 1
为什么相同值的输出不同?
【问题讨论】:
-
6.5不是浮点数,而是double -
printf("%d",sizeof(6.5f));使其成为float。 -
"为什么这里的输出不同?"为什么应该是一样的?您可以将一个分配给另一个这一事实并不意味着它们具有完全相同的类型。
-
格式说明符应该是,例如
printf("%zu", sizeof(6.5));