C程序每次打印0.00000但返回正确答案

时间:2016-01-21 07:12:46

标签: c floating-point printf

我有一些非常简单的代码,我遇到了问题。这个程序只是计算一个人的体重(千克)并显示它。但是,每次运行时,打印的答案都会返回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);
} 

1 个答案:

答案 0 :(得分: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;

    < / LI>
  2. 请不要让return看起来像一个功能。尽量坚持return wk;