【问题标题】:Variable Multiplication in C?C中的变量乘法?
【发布时间】:2010-06-28 20:07:59
【问题描述】:
//Hydroelectric Dam Helper
#include <stdio.h>
#define GRAV 9.80
#define EFINC 0.9
#define EFINC2 90


int main()
{
  //Defines all the variables to be used
  double height, work, mass;
  printf("Height of dam (in meters):");
  scanf("%lf", &height);
  printf("Flow of water (in thousand cubic meters per second):");
  scanf("%lf", &mass);
  work = (mass * GRAV * height * EFINC); 
  printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
  return 0; 
}

值设置正确,我通过打印高度和质量对其进行了测试,但工作从未收到值,并且 EFINC2 打印出一个我不太确定的荒谬数字

【问题讨论】:

    标签: c variables constants multiplication


    【解决方案1】:
    printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
    

    应改为:

    printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);
    

    &amp;work 是一个指向工作的指针,即double*,但要让printf 打印您需要传递double 而不是指针的值。在您的平台上,double* 的大小可能与 double 的大小不同,从而导致后续的 printf 格式使用错误的数据。

    【讨论】:

    • 很容易认为控制台上打印的是变量值.....为了安全起见,请始终检查调试器中的实际变量。
    【解决方案2】:

    问题是您让 printf 输出带有 %f 说明符的 float,但通过 &amp;work 传入 double*。只需删除&amp;,它应该可以正常工作。

    printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);
    

    【讨论】:

      【解决方案3】:

      您收到“荒谬号码”的原因是您将work 的地址传递给printf()。将&amp;work 更改为work,它应该可以正常工作。

      【讨论】:

        【解决方案4】:

        当然。 printf 行中的和号&amp; 表示读取变量work地址 而不是

        【讨论】:

          【解决方案5】:

          尝试将 a d 附加到常量以强制 c 不强制转换为 int 可能会起作用。您也可以尝试将值显式转换为 float 或 double。

          【讨论】:

            【解决方案6】:

            你已经给出了&work,它是内存中工作变量的地址,所以它不会打印任何荒谬的值,它会打印工作的内存位置。

            您应该从 &work 中删除 & 以接收工作变量的值。

            printf("大坝将以 %d%% 的效率发电 %f 兆瓦", work, EFINC2);

            【讨论】:

              猜你喜欢
              • 2013-02-19
              • 2014-11-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-11
              • 1970-01-01
              • 2020-05-17
              • 2015-05-24
              相关资源
              最近更新 更多