在 C 语言中,我们有三种浮动数据类型,即float 、 double和long 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 基础课程。