Cla*_*ker 3 c operators sizeof
我知道像x++或函数调用这样的表达式不会在 sizeof 运算符中计算。
当我运行下面的代码时,我得到了4 8 8输出。有人可以向我解释第 6、7、8 行实际发生了什么吗?
#include <stdio.h>
int main()
{
int x=10;
double y=10.0;
printf("%d ",sizeof (x=x+y));
printf("%d ",sizeof (y=x+y));
printf("%d ",sizeof (x+y));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我发现如果表达式=隐式地(如预增量)或显式地(如x=x+y)包含赋值运算符,则表达式不会在sizeof运算符中求值。
我对吗?
sizeof运算符对参数的数据类型进行操作。在你的代码中
(x=x+y)产生一个类型int,与x(y=x+y)产生一个类型double,与yx+y产生一个类型double。尺寸是基于此计算的。
在您的平台中,很可能sizeof(int)is4和sizeof(double)is 8,因此您会看到相应的输出。
也就是说,sizeof产生 type 的结果size_t,您必须使用%zu格式说明符来打印结果。