我只是想问,如果说我初始化一个整数变量,如
int a = 9;
那么,为什么我们不能将这个整数值用作float
变量初始化的部分,如果我试着写
float g=a.0;
为什么这个陈述实际上是一个错误?
编写此语句时,编译器内部会出现什么问题?
答案 0 :(得分:3)
这不是C
语法。使用这样的点的唯一方法是访问struct
成员时。
将int
投射到float
,只需:
int i = 5;
float f = i;
正如pmg建议的那样,甚至没有必要施展。
答案 1 :(得分:2)
编写此语句时编译器内部导致的问题是该语句不遵循C standard中为C语言定义的语法。因此,无法知道它意味着什么。对你来说很明显它应该是什么意思,但与自然语言不同,在编程语言中,事物必须在被使用之前定义,并且从未定义a.0
应该是什么意思。
答案 2 :(得分:1)
.
是一个运算符(与!
或+
是运算符的方式相同)。编译器查看a
,并确定它不能将.
运算符应用于它。
如果a
是结构,则可以应用.
。
答案 3 :(得分:0)
我认为您正在尝试打印int
值,就好像它是float
,即带小数位,因为您可以使用printf()
float
说明符使其打印int
为float
。
试试这个
#include <stdio.h>
int
main()
{
int x = 4;
printf("%.1f", (float)x);
return 0;
}
答案 4 :(得分:0)
如上所述,C仅使用。作为浮点常量的小数点,如2.171828或结构成员,如mystruct.member。
然而,使用浮点数组来保存整数的想法是运行多少个(任意精度)库,例如apfloat。