C 为什么sizeof()返回4字节而不是2字节的短int?

C 为什么sizeof()返回4字节而不是2字节的短int?,c,C,使用sizeof()打印变量的大小 #包括 main() { INTA=10,b=20; 短int-c; 短整数d=sizeof(c=a+b); int e=sizeof(c*d);//e的值是4而不是2 双f=sizeof(e*f); printf(“d:%d\ne:%d\nf:%lf\n”,d,e,f); } 为什么sizeof()返回int的大小,而不是短int,即2个字节?语句 sizeof(c = a+b); 不测量变量c的大小,而是根据表达式c=a+b计算的值的大小。分配给c的是

使用sizeof()打印变量的大小

#包括
main()
{
INTA=10,b=20;
短int-c;
短整数d=sizeof(c=a+b);
int e=sizeof(c*d);//e的值是4而不是2
双f=sizeof(e*f);
printf(“d:%d\ne:%d\nf:%lf\n”,d,e,f);
}
为什么sizeof()返回int的大小,而不是短int,即2个字节?

语句

sizeof(c = a+b);
不测量变量
c
的大小,而是根据表达式
c=a+b
计算的值的大小。分配给
c
的是
a+b
的值,但也是整个表达式的值

算术表达式中出现的存储类型小于
int
的整数值将升级为
int
(或
无符号int
)进行计算。算术表达式结果的存储类型为
int
。这不受存储在
short int
变量中的事实的影响。因此,
sizeof()
返回的值

sizeof(c*d)

也可参见:
sizeof(c = a+b);