逻辑错误 - 将Fah转换为摄氏度

时间:2016-10-04 14:07:22

标签: c formula date-arithmetic

#include <stdio.h>
#define F(x) 32 + (x*9)/5

int main(void)
{ 
  int F,C;
  printf ("Enter temperature in celsius=");
  scanf ("%d",&C);
  F(C);

  printf (" %d fahrenheit = %d celsius\n", F, C);

  return 0;
 }

当我输入10摄氏度时,它会显示为:

1798680630 fahrenheit = 10 celsius

我错误地写了这个公式吗?我似乎无法弄清楚错误。 只是一个初学者,通过我的教程。谢谢!

3 个答案:

答案 0 :(得分:2)

您根本不存储宏扩展的结果。因此,F未经授权。

国际海事组织,根本不需要宏观。只需使用变量:

#include <stdio.h>
int main(void)
{
  int C;
  float F;
  printf ("Enter temperature in celsius=");
  scanf ("%d",&C);
  F = 32 + (C*9)/5.0;
  printf (" %f fahrenheit = %d celsius\n", F, C);

  return 0;
 }

请注意,我使用了文字5.0,因此您不会执行整数除法。

答案 1 :(得分:0)

您不能将F()的输出保存到变量中。它应该是:

  (...)
  F = F(C);

  printf (" %d fahrenheit = %d celsius\n", F, C);

目前您正在打印未初始化的变量,这是一种未定义的行为并且非常危险。

答案 2 :(得分:0)

您正在打印F的地址。也不要浪费变量。

删除

F(C);

您的打印如下:

printf (" %d fahrenheit = %d celsius\n", F(C), C);