📜  sizeof() 用于 C 中的浮动常量

📅  最后修改于: 2021-10-23 07:55:34             🧑  作者: Mango

在 C 语言中,我们有三种浮动数据类型,即floatdoublelong double 。这 3 种类型中每一种的确切大小取决于 C 编译器实现/平台。以下程序可用于找出您机器上每种浮动数据类型的大小。

#include "stdio.h"
int main()
{
 printf("%d %d %d",sizeof(float), sizeof(double), sizeof(long double));
 return 0;
}

但是浮点常量的大小(例如 31.4 或 2.718)呢?例如,如果我们有如下定义的 PI 宏,则 sizeof(3.14) 是多少。

#define PI 3.14

现在如果我们做sizeof(PI) ,它的大小是多少?是否等于sizeof(float) ?或者它也依赖于编译器实现。好吧,对于浮动常量,C 标准(C11 即 ISO/IEC 9899:2011)给出了指导方针。根据 C11 条款6.4.4.2,“无后缀的浮点常量具有 double 类型。如果以字母 f 或 F 为后缀,则它的类型为 float。如果以字母 l 或 L 为后缀,则它的类型为 long double。

这意味着浮点常量的类型与双精度数据类型相同。因此,如果机器上的 double大小为 8 字节,则浮动常量的大小将为 8 字节。可以使用以下程序找到这一点

#include "stdio.h"
#define PI 3.14
int main()
{
 printf("%d",sizeof(PI));
 return 0;
}

根据上面提到的 C 标准条款,可以使用 f 或 F 将浮点常量转换为浮点类型。类似地,可以使用 l 或 L 将浮点常量转换为 long double 。所以不应该过多考虑猜测以下输出:

#include "stdio.h"
int main()
{
 printf("%d %d",sizeof(3.14F), sizeof(3.14L));
 return 0;
}

如果您觉得以上有用,请点赞/推特/G+1。另外,请给我们留言以获得进一步的说明或信息。我们很乐意帮助和学习🙂

想要从精选的视频和练习题中学习,请查看 C 基础到高级C 基础课程。