Scanf转让;“垃圾”;变量的值
我试着写一个简单的c程序,用导数做一些事情,但这不是问题的关键: 当我运行程序时,它要求我输入一组浮点值,但无论我输入什么,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
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”。相关:真的有必要否决我的问题吗?有什么问题吗?我没有投反对票(我也不会投反对票),但我猜原因是你可以通过查看手册页来回答这个问题。这并没有显示出太多的研究努力。我的反对票是因为已经被引用的原因,因为对有用的答案没有接受,因为标题中有一个重要的打字错误,我不想修改,因为这似乎仅仅是发帖人的粗心。