我想知道我的错误在哪里。
当将参数扫描为双精度并立即打印(用于检查)时,打印不会给我输入的值。
我试图将它们定义为整数并且它有效,但是对于双打它只是给我这个:a=0.00000
,b=-0.00000
看看:
#include <stdio.h>
#include <stdbool.h>
int main()
{
double a=0,b=0,c=0;
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
printf("%lf %lf\n",a,b);
return 0;
}
编辑:抱歉,我没有包含我的整个代码,这是整个代码,但它仍然给了我同样的东西。
答案 0 :(得分:3)
按原样编写,您的程序将接受3个浮点值的正确格式化输入,并将打印前两个。
您输入什么值?
您在程序中输入的精确输入是什么?
我怀疑您输入了额外字符:scanf
停止扫描无效输入。
您应该测试scanf
函数调用的返回值,并验证值是否已实际解析。
顺便提一下,printf
参数的double
格式为%f
,而不是%lf
,但这不应该造成问题,因为额外的l
最多可能被忽略了。
以下是您应该尝试找出问题所在的更正版本:
#include <stdio.h>
int main(void) {
double a = 0, b = 0, c = 0;
if (scanf("%lf", &a) != 1) {
printf("invalid input for a\n");
}
if (scanf("%lf", &b) != 1) {
printf("invalid input for b\n");
}
if (scanf("%lf", &c) != 1) {
printf("invalid input for c\n");
}
printf("a=%f b=%f\n", a, b);
return 0;
}