代码是:
#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
答案 0 :(得分:4)
您的转化说明符错误,double
为scanf()
。你需要使用
scanf("%lf", &C);
从C11
,章节§7.21.6.2
l
(ell)指定以下
d
,i
,o
,u
,x
,X
或n
转换说明符适用 带有指向long int
或unsigned long int
的类型指针的参数;以下a
,A
,e
,E
,f
,F
,g
或{{1}转换说明符适用于 带有G
类型指针的参数;或以下double
,c
或s
转换说明符适用于类型指针为[
的参数。
也就是说,您必须检查wchar_t
的返回值以确保呼叫成功。否则,您最终将使用未初始化变量的值。