为什么scanf()在读取l时需要“ %lf”中的double,当printf()可以使用“ %f”而不管其参数是double还是?

示例代码:

double d;
scanf("%lf", &d);
printf("%f", d);

最佳答案

因为C会将带有可变参数的函数的浮点数提升为双精度。指针没有提升为任何内容,因此您应该使用%lf%lg%le(或C99中的%la)来读取双精度型。

关于c - 为什么在printf()只需“%f”就可以的情况下,scanf()需要“%lf”来进行 double 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37971950/

10-15 16:03