通常在C语言中,我们必须在变量声明中告诉计算机数据的类型。例如,在下面的程序中,我要打印两个浮点数X和Y的总和。
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
我不得不告诉编译器变量X的类型。
- 编译器不能自行确定其类型
X
吗?
是的,我可以这样做:
#define X 5.2
现在,我可以编写程序而无需告诉编译器X
as 的类型:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
因此,我们看到C语言具有某种功能,通过它可以自行确定数据类型。就我而言,它确定X
为float类型。
- 在main()中声明某些内容时,为什么还要提及数据类型?为何编译器无法
main()
像in中那样自行确定变量的数据类型#define
。
#define X 5.2
,X
它不是一个变量,而是一个常量,因此可以用5.2
您提到的任何地方从字面上替换它为预处理器X
。您不能重新分配X
。
auto
实际上可以完成您想要的操作)。另一方面,如果您认为自己知道代码在做什么,并且实际上键入了其他内容,则像这样的静态类型将在它成为大问题之前更早地捕获错误。每种语言都达到平衡:静态打字,类型推论,动态打字。对于某些任务,额外的输入实际上是值得的。对于其他人,这是浪费。
5.2
是adouble
,因此第一个程序将双float
精度字面量四舍五入为精度,然后将它们作为浮点数相加,而第二个程序将5.1的双精度表示形式四舍五入double
并double
使用double
加法将其添加到值5.2中,然后将计算结果四舍五入为float
精度。由于四舍五入发生在不同的位置,因此结果可能会有所不同。这只是影响其他程序相同行为的变量类型的一个示例。