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

时间:2017-02-21 01:26:38

标签: c debugging truncated

所以,我打算在我的gf上给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);
    }

问题是,当我运行此程序时,它返回422.000000,而不是正确的结果422.267000。我不明白:如果我在这里没有使用任何“int”,为什么程序会截断结果呢?我一直认为程序会截断数字,如果它们是浮点数或双数声明为整数。但我不清楚为什么该程序在这里截断数字。谢谢。

1 个答案:

答案 0 :(得分:5)

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

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