为什么下面代码中两个变量的大小不同?

RAD*_*GIA -3 c

#include<stdio.h>
int main()
{
  short i = 90L;
  long j = 90;
  printf("%d", sizeof(i));
  printf("%d\n", sizeof(j));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我只是读到如果我们把L放在一个整数值的末尾,那么实际上它得到的存储量等于long值,所以基本上他们的意思是说这个,就像我计算两个变量的大小一样,它是不同的,如果它实际上占用了一个长变量的大小,那么显然它会显示大小为4个字节,但它只根据短数据类型的大小显示大小,那么什么是背后的原因.

这个值是否被截断但是当我修改i的值时,它只将它打印为90,所以一切都发生了.

Kei*_*son 6

short i=90L;
Run Code Online (Sandbox Code Playgroud)

90L是类型的常量long.初始化将该值转换为short.

long j=90;
Run Code Online (Sandbox Code Playgroud)

90是类型的常量int.初始化将其转换为类型long.

对象(变量)的大小与其当前值无关.它是它在内存中占用的字节数.