无论我输入什么,C double都保持0 #包括 int main() { 双a,b; scanf(“%lf%lf”、&a和&b); printf(“%lf%lf”,a,b); 返回0; }
我从printf得到的结果是0.000000,不管输入是什么。我该怎么做才能补救呢?这似乎是一些编译器或系统相关的问题,但我不知道这可能是什么。。提前谢谢我想你要做的是输入一个带有无论我输入什么,C double都保持0 #包括 int main() { 双a,b; scanf(“%lf%lf”、&a和&b); printf(“%lf%lf”,a,b); 返回0; },c,double,C,Double,我从printf得到的结果是0.000000,不管输入是什么。我该怎么做才能补救呢?这似乎是一些编译器或系统相关的问题,但我不知道这可能是什么。。提前谢谢我想你要做的是输入一个带有小数点的数字(,) 大概是这样的: #include<stdio.h> int main() { double a,b; scanf("%lf%lf",&a,&b); printf("%lf %lf",a,b); return 0; } 但是您必须使用点()
小数点的数字
(,
)
大概是这样的:
#include<stdio.h>
int main()
{
double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf %lf",a,b);
return 0;
}
但是您必须使用点(
)!像这样:
0,4565 0,345
那么它应该可以正常工作了!程序中没有错误/错误%lf
不是有效的格式说明符。您应该使用%f
作为double
,或者%Lf
作为长double
(如果支持)。您的代码可以在带有gcc4.8.2的64位Ubuntu上正常工作
请提供有关编译器/arch/等的更多信息。对我来说很好!请看:您能显示您的输入吗?您的操作系统使用的是什么语言环境(语言)?1.1 2.2是我的输入,我正在波兰语Windows上编译。8如果不起作用,请在黑暗中尝试以下操作:一些较弱的编译器不能正确地合并FP数学,除非看到一些数学,并且输入/输出不能做到这一点。尝试添加printf(“%lf%lf%lf\n”,a、b、a+b)
强制进行某些FP运算。scanf()
的返回值是多少?如果不是2,代码甚至不应该尝试printf(“%lf%lf”,a,b)代码>。至少初始化a,b
一些有趣的东西,比如5.6和7.8,看看scanf()
是否正在发挥作用。不,在我的input@Marcin它必须工作得很好!你的意见是什么?你使用哪种编译器?我使用的是代码::blocks 13.12。输入只有1.1和2.2,没什么特别的。不管我输入什么,我总是得到零,真的。可能值得一提的是,我设置了以下标志:-std=c99,-static,-Wall,-lm,-c.Err我是说gcc编译器我正在使用带有波兰本地化的windows 8。值得一提的是,用float替换double和用f替换lf使其运行正常,这似乎是一个双重相关的问题。%lf
仅在printf
中无效,并且仅在C99之前无效。在C99和C11中,%lf
与%f
@Cubbi:好的,但为了最广泛的兼容性,%f值得一试,由于给出的信息中几乎没有其他解释。我怀疑你是正确的,正如OP所说的“Windows 8”(OP确实应该指定编译器,而不是操作系统),并且那里的某些编译器不符合C99。
0.4565 0.345