我写了一个代码,从Celisius转换为Fahrenheit,但输出太大了

时间:2017-03-07 06:21:36

标签: c double format-specifiers conversion-specifier

代码是:

#include <stdio.h>
#include <stdlib.h>

int main() {
    double C, F;
    printf("Enter the temperature in Celisius: ");
    scanf("%f", &C);
    F = 32 + (C * (180.0 / 100.0));
    printf("%f C = %f F\n", C, F);
    system("pause");
    return 0;
}

输出结果为:

  

以Celisius输入温度:100
  -92559604910177974000000000000000000000000000000000000000000000.000000 C =   -166607288838320360000000000000000000000000000000000000000000000.000000 F

1 个答案:

答案 0 :(得分:4)

您的转化说明符错误,doublescanf()。你需要使用

  scanf("%lf", &C);

C11,章节§7.21.6.2

添加相关引用
  

l(ell)

     

指定以下diouxXn转换说明符适用   带有指向long intunsigned long int的类型指针的参数;以下aAeEfFg或{{1}转换说明符适用于   带有G类型指针的参数;或以下doublecs   转换说明符适用于类型指针为[的参数。

也就是说,您必须检查wchar_t的返回值以确保呼叫成功。否则,您最终将使用未初始化变量的值。