为什么我们不能使用整数变量作为浮动类型变量的一部分?

时间:2015-02-26 12:20:01

标签: c compiler-errors

我只是想问,如果说我初始化一个整数变量,如

int a = 9;

那么,为什么我们不能将这个整数值用作float变量初始化的部分,如果我试着写

float g=a.0;

为什么这个陈述实际上是一个错误?

编写此语句时,编译器内部会出现什么问题?

5 个答案:

答案 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说明符使其打印intfloat

试试这个

#include <stdio.h>

int
main()
{
    int x = 4;
    printf("%.1f", (float)x);

    return 0;
}

答案 4 :(得分:0)

如上所述,C仅使用。作为浮点常量的小数点,如2.171828或结构成员,如mystruct.member。

然而,使用浮点数组来保存整数的想法是运行多少个(任意精度)库,例如apfloat。