Scanf转让;“垃圾”;变量的值

Scanf转让;“垃圾”;变量的值,c,scanf,C,Scanf,我试着写一个简单的c程序,用导数做一些事情,但这不是问题的关键: 当我运行程序时,它要求我输入一组浮点值,但无论我输入什么,scanf函数都会将“垃圾”值分配给变量,下面是代码: double a, b, c, d, x, h; printf("Please enter the coefficient of X cubed: "); scanf("%3f", &a); printf("\nPlease enter the coefficient of X squared: "); sca

我试着写一个简单的c程序,用导数做一些事情,但这不是问题的关键: 当我运行程序时,它要求我输入一组浮点值,但无论我输入什么,scanf函数都会将“垃圾”值分配给变量,下面是代码:

double a, b, c, d, x, h;
printf("Please enter the coefficient of X cubed: ");
scanf("%3f", &a);
printf("\nPlease enter the coefficient of X squared: ");
scanf("%3f", &b);
printf("\nPlease enter the coefficient of X: ");
scanf("%3f", &c);
printf("\nPlease enter the free coefficient: ");
scanf("%3f", &d);
printf("\nPlease enter x: ");
scanf("%3f", &x);
printf("\nPlease enter the offset: ");
scanf("%3f", &h);

printf("%.3f %.3f %.3f %.3f %.3f %.3f", a,b,c,d,x,h);
我输入了a、b、c、d、x和h的值,但是printf函数显示了非常奇怪的值——与我输入的完全不同

我用谷歌搜索了所有我想到的方法,但我似乎找不到它发生的原因


有人能试着弄清楚为什么会这样吗

使用
lf
转换说明符读取
double
值,而不是
f
转换说明符,它是读取
float
值的说明符
fscanf
fprintf
函数在这方面是不对称的。

使用
lf
转换说明符来读取
值,而不是
f
转换说明符来读取
浮点值
fscanf
fprintf
函数在这方面是不对称的。

你必须使用
%lf
%g
提取双精度,而不是
%f

你必须使用
%lf
%g
提取双精度,非
%f

阅读
scanf
格式字符串上的文档。它们不同于
printf
。你想要“%lf”。相关:真的有必要否决我的问题吗?有什么问题吗?我没有投反对票(我也不会投反对票),但我猜原因是你可以通过查看手册页来回答这个问题。这并没有显示出太多的研究工作。我的否决票是因为已经列举了一些原因,因为我没有接受有用的答案,而且因为标题中有一个重要的打字错误,我不想修改,因为这似乎仅仅是发帖人的粗心。请阅读
scanf
格式字符串上的文档。它们不同于
printf
。你想要“%lf”。相关:真的有必要否决我的问题吗?有什么问题吗?我没有投反对票(我也不会投反对票),但我猜原因是你可以通过查看手册页来回答这个问题。这并没有显示出太多的研究努力。我的反对票是因为已经被引用的原因,因为对有用的答案没有接受,因为标题中有一个重要的打字错误,我不想修改,因为这似乎仅仅是发帖人的粗心。