C中的不同浮点变量给出不同的大小

时间:2014-05-14 09:04:52

标签: c floating-point size byte

这可能是一个“noob-ish”问题,但我在互联网上搜索并找不到答案。我知道在C中,每种类型的变量都有不同的大小:

char   : 1 byte
short  : 2 bytes
int    : 4 bytes
long   : 4 bytes
float  : 4 bytes
double : 8 bytes

但是,比方说,我声明了一个tpye float的变量a和一个float类型的变量b。现在让我们说变量a得到一个浮点数,例如130.25和b得到5.5。现在,考虑到浮点数是4个字节长,一旦我将它们各自的值关联起来,肯定ab的大小不一样。那是对的吗?或者是相同大小的变量,无论它们与它们相关的值是什么?

1 个答案:

答案 0 :(得分:4)

变量的大小取决于其类型,而不取决于其值。

两个float变量的大小始终相同,无论存储在哪个值中。

请注意,您可以执行以下操作:

float a;
float b;

if(sizeof a == sizeof b)
  printf("a and b have the same size\n");

如上所示,即使变量的值未定义,上述内容仍然有效。这是因为sizeof可以在编译时进行评估,因此根本不依赖于实际值。这是另一个证明该值不会影响变量大小的证明。