我的C代码出了什么问题?

时间:2015-04-20 07:21:56

标签: c types

float x = 4.5;
main()
{
    float y,float f(); 
    x*=2.0;
    y=f(x);
    printf("\n%f%f",x,y);
}

float f (float a)

{
    a+=1.3;
    x-=4.5;
    return(a+x);
}

这个节目来自书:让我们来自Yashwant kanetkar。它说的输出是4.500000 5.800000。我收到错误。

5 个答案:

答案 0 :(得分:1)

//global variable x, can be accessed from anywhere
float x = 4.5;

//inform the compiler, that a function that is defined later, but it exists in the code, and to use it before it's defined, we need to know how it looks like:
float f(float a);

//I need to specify what my main function returns, typically "int"
int main()
{
    //local variable for saving the result in:
    float y;

    //multiply x, with 2, and save the result in x:
    x*=2.0;

    //run the function:
    y=f(x);

    //show the result:
    printf("\n%f%f",x,y);

    //return a value to let the OS know how the program ended (0 is success)
    return 0;
}

//define the function
float f (float a)
{ 
    //whatever a is provided, add 1.3 to it before doing anything else
    a+=1.3;
    //subtract 4.5 from the global variable, before doing anything else:
    x-=4.5;
    //return the sum of a and x, as the result of this function.
    return(a+x);
}

这里的数学是:

x = 4.5
x = (x * 2) = 9
a = (x = 9) = 9
a = (a + 1.3) = 10.3
x = (x - 4.5) = 4.5
y = a + x = (4.5 + 10.3) = 14.8

答案 1 :(得分:0)

第1点:

float f();移除main()。在float f();之外声明main()。因此,它将用于前向声明的目的。

第2点。

删除,并在;之后添加float y

第3点。

main()应为int main(void)

注意:请考虑在return末尾添加明确的main()语句。虽然不是强制性的,但被认为是一种很好的做法。

答案 2 :(得分:0)

float y,float f();

float y

之后使用分号
float y;

float f(); //(错误的原型)。你需要将参数传递给这个函数。

无需在main中声明函数。您可以从float f();功能中删除main()

主要没有返回任何值

使用

int main()
{
   //your code
    return 0;
}

答案 3 :(得分:0)

当您声明f()

float y,float f();

你没有使用原型。所以当调用f()时:

y=f(x);

编译器将float参数x提升为double类型。

要解决此问题,请使用完整原型声明该函数:

float f(float a);

答案 4 :(得分:0)

无需在main中声明变量等函数。 2.另外,main()应该是int main()。 3.在使用之前定义/声明您的功能。

 #include <stdio.h>
float x = 4.5;

float f (float a)

{
a+=1.3;
x-=4.5;
return(a+x);
}
int main(void) {
// your code goes here
float y;

x*=2.0;
y=f(x);
printf("\n%f%f",x,y);
return 0;
}

Ideone链接:http://ideone.com/W7V1Qr