2016-01-21 77 views
-2

我有一些非常简单的代码,我遇到了问题。这个程序只是计算一个公斤的重量并显示出来。但是,每次运行时,打印的答案都会返回为0.00000,但会返回正确的答案。有没有人看到我的代码有什么问题?C程序每次打印0.00000,但返回正确的答案

#include <stdio.h> 
#include <math.h> 

int main(void) 
{ 
    float w; 
    float const wc=0.454; 

    printf("Enter your weight in pounds "); 
    scanf("%f", &w); 

    float wk = w * wc; 

    printf("Your weight in kilograms is: %f", &wk); 

    return(wk); 
} 
+4

只是一个快速的FYI:'main'函数的返回码是程序的成功/失败指示器。一般来说,零被认为是成功的,一个小的正数是失败的。 –

+1

编译器警告。启用它们并阅读它们。 –

回答

9

您不需要将变量的地址作为参数传递给格式说明符以打印该值。您需要更改

printf("Your weight in kilograms is: %f", &wk); 

printf("Your weight in kilograms is: %f", wk); 

这就是说,

  1. 经常检查scanf()返回值。如果没有,那么在scanf("%f", &w);失败的情况下,您将调用undefined behavior,因为您最终将在float wk = w * wc;中使用单位本地变量float wk = w * wc;

  2. 请不要让return看起来像一个函数。尝试坚持return wk;

+0

和检查返回值的方法是...(if(scanf(things)!= numOfThingsScaned){停止一切)} – rustypaper

相关问题