sizeof的功能

时间:2015-01-25 18:55:27

标签: c

为什么以下代码:

#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上打印? 我原本以为将xl转换为双倍并显示24。 为什么8?

2 个答案:

答案 0 :(得分:3)

sizeof返回用于存储其参数的字节数。在这种情况下,它的参数是x+l+dxintl一个longd一个double。将整数类型添加到double时,结果将被提升为double。所以你写的相当于sizeof(double)double需要8个字节才能存储,因此您会看到8作为结果。

答案 1 :(得分:1)

您只向sizeof传递一个参数,并且该参数的类型为double。如果你写了sizeof(x)+ sizeof(l)+ sizeof(d),那就会有所不同(尽管仍然不是24,因为不是每个参数都是double)。