#include<stdio.h>
int main(void)
{
double num=5.2;
int var=5;
printf("%d\t",sizeof(!num));
printf("%d\t",sizeof(var=15/2));
printf("%d",var);
return 0;
}
该程序提供了输出4 4 5
。我不明白为什么会这样。
var
的值不会更新为7? sizeof
运算符如何工作?
答案 0 :(得分:3)
表达式
!num
var=15/2
都评估为int。 <{1}}在您的平台上总是4个。
至于为什么var没有更新:
sizeof是一个编译时运算符,因此在编译时sizeof及其操作数被结果值替换。根本不评估操作数(除非是可变长度数组);只有结果的类型才重要。
答案 1 :(得分:1)
sizeof
运算符会显示其参数的飞镖类型的大小。它不返回参数的结果。在您的平台上,一个整数长度为4个字节,这就是您在此处学到的内容。如果您想要结果,只需剪切sizeof
。