为什么以下代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
int x;
long l;
double d;
printf("\n%d",sizeof(x+l+d));
return 0;
}
在控制台8上打印?
我原本以为将x
和l
转换为双倍并显示24。
为什么8?
答案 0 :(得分:3)
sizeof
返回用于存储其参数的字节数。在这种情况下,它的参数是x+l+d
。 x
是int
,l
一个long
和d
一个double
。将整数类型添加到double
时,结果将被提升为double
。所以你写的相当于sizeof(double)
。 double
需要8个字节才能存储,因此您会看到8
作为结果。
答案 1 :(得分:1)
您只向sizeof传递一个参数,并且该参数的类型为double
。如果你写了sizeof(x)+ sizeof(l)+ sizeof(d),那就会有所不同(尽管仍然不是24,因为不是每个参数都是double
)。