#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


我写错公式了吗?我似乎无法找出错误。
只是一个初学者,请阅读我的教程。谢谢!

最佳答案

您根本不存储宏扩展的结果。因此,F未初始化。

IMO,根本不需要该宏。只需使用一个变量:

#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,这样您就不会仅执行整数除法。

关于c - 逻辑错误-将华氏转换为摄氏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39854478/

10-11 09:09