我已尝试将定义切换为consts但它似乎无法正常工作
#include <stdio.h>
#include <stdlib.h>
#define TIMES 5/9
#define MINUS 32
int main()
{
int temp_fahr = 0;
printf("Enter the temperature in fahrenheit\n");
scanf("%d\n",temp_fahr);
printf("The temperature in celcious is: %.3f\n",(temp_fahr-MINUS)*TIMES);
return 0;
}
答案 0 :(得分:1)
你的问题就在这一行
scanf("%d\n",temp_fahr);
正如编译器警告会告诉您的那样,它期望输入类型为int *
,但会接收整数。因此,它会尝试写入导致分段错误的地址temp_fahr
点。
其次,如果通过提供指向temp_fahr
的指针来修复它,scanf
会一直等待从标准输入中修剪的换行符,因此它会卡在那里。所以,正确的行是
scanf("%d",&temp_fahr);
您还会注意到%f
格式需要类型double
的参数并接收整数,因此您需要在将结果传递给某个点之前将其转换为double printf
。