为什么这个程序会截断数字?

Why is this program truncating numbers?

所以,我打算给我的女朋友介绍一下 C 语言编程,但在我为它编写一个程序时出现了这个问题。 这是程序:

    #include<stdio.h>  

float sum(x,y) {
        float u = x+y;
        return u;
    }

    int main(void) {
        float x = 30.134;
        float y = 392.133;
        float z = sum(x,y);
        printf("%f \n",z);
    }

问题是,当我 运行 这个程序时,它 returns 422.000000,而不是正确的结果 422.267000。我不明白:如果我在这里没有使用任何 "int",为什么程序 t运行 匹配结果?我一直认为,如果数字是声明为整数的浮点数或双精度数,则该程序将 t运行 分类。但是我看不清楚为什么程序要在这里 运行cating 数字。谢谢。

旧 C 中的默认类型是 int。如果您希望按您的方式键入参数,则需要正确声明参数:

float sum(float x, float y)
//        ^^^^^    ^^^^^