它为什么一直冻结

时间:2017-11-15 19:45:47

标签: c

我已尝试将定义切换为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;
}

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行

scanf("%d\n",temp_fahr);

正如编译器警告会告诉您的那样,它期望输入类型为int *,但会接收整数。因此,它会尝试写入导致分段错误的地址temp_fahr点。

其次,如果通过提供指向temp_fahr的指针来修复它,scanf会一直等待从标准输入中修剪的换行符,因此它会卡在那里。所以,正确的行是

scanf("%d",&temp_fahr);

您还会注意到%f格式需要类型double的参数并接收整数,因此您需要在将结果传递给某个点之前将其转换为double printf