📜  C中的浮点常量的sizeof()

📅  最后修改于: 2021-05-25 23:54:38             🧑  作者: Mango

在C语言中,我们有三种浮动数据类型,即floatdoublelong double 。这三种类型中每种类型的确切大小取决于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)是多少。

#定义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数据类型的类型相同。因此,如果机器上的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基础课程》。