【问题标题】:C Program prints 0.00000 everytime but returns correct answer [closed]C程序每次打印0.00000但返回正确答案[关闭]
【发布时间】:2016-01-21 07:12:45
【问题描述】:

我有一些非常简单的代码,但我遇到了问题。该程序只是简单地计算某人的体重(以公斤为单位)并显示出来。但是,每次我运行时,打印的答案都会返回 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);
} 

【问题讨论】:

  • 仅供参考:main 函数的返回码是程序的成功/失败指示器。一般来说,零被认为是成功,一个小的正数被认为是失败。
  • 编译器警告。启用它们并阅读它们。

标签: c floating-point printf


【解决方案1】:

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

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

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

也就是说,

  1. 始终检查scanf() 的返回值。否则,如果scanf("%f", &amp;w); 失败,您将调用undefined behavior,因为您最终将在float wk = w * wc; 中使用一个未初始化的局部变量float wk = w * wc;

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

【讨论】:

  • 而检查返回值的方法是... (if(scanf(things) != numOfThingsScaned){ just stop everything.})
猜你喜欢
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多