C sizeof的功能

C sizeof的功能,c,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; } #包括 #包括 int main() { printf(“你好,世界!\n”); int x; 长l; 双d;

为什么要使用以下代码:

#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;
}
#包括
#包括
int main()
{
printf(“你好,世界!\n”);
int x;
长l;
双d;
printf(“\n%d”,大小为(x+l+d));
返回0;
}
在控制台8上打印? 我最初认为这会将
x
l
转换为double并显示24。
为什么是8?

sizeof
返回用于存储其参数的字节数。在这种情况下,它的参数是
x+l+d
x
是一个
int
l
a
long
,和
d
a
double
。将整数类型添加到
double
s时,结果将升级为
double
。因此,您所编写的内容相当于
sizeof(double)
。一个
double
需要8个字节来存储,因此您看到的结果是
8

sizeof
返回用于存储其参数的字节数。在这种情况下,它的参数是
x+l+d
x
是一个
int
l
a
long
,和
d
a
double
。将整数类型添加到
double
s时,结果将升级为
double
。因此,您所编写的内容相当于
sizeof(double)
。一个
double
需要8个字节来存储,因此您看到的结果是
8

您只将一个参数传递给sizeof,并且该单个参数的类型是
double
。如果您编写了sizeof(x)+sizeof(l)+sizeof(d),则情况会有所不同(尽管仍然不是24,因为不是每个参数都是
double
)。

您只将一个参数传递给sizeof,而单个参数的类型是
double
。如果您编写了sizeof(x)+sizeof(l)+sizeof(d),则情况会有所不同(尽管仍然不是24,因为不是每个参数都是
double
)。

因为
sizeof
检查其参数的类型
x+l+d
是一个类型为
double
的表达式,因此它的大小显然是–8字节。顺便说一下,使用
%d
转换说明符打印
sizeof
的结果是未定义的行为,
size\u t
的正确格式字符串是
%zu
。因为
sizeof
检查其参数的类型
x+l+d
是一个类型为
double
的表达式,因此它的大小显然是–8字节。顺便说一下,使用
%d
转换说明符打印
sizeof
的结果是未定义的行为–
size\u t
的正确格式字符串是
%zu