C中的输入输出

Ser*_*gey 1 c floating-point printf

double d;
scanf("%f", &d);
printf("%f", d);
Run Code Online (Sandbox Code Playgroud)

结果:

输入:10.3

输出:0.00000

为什么?我认为输出应该是10.3 visual studio 2008.

Ram*_*nka 8

因为scanf(),%f是为了float.因为double,你需要%lf.所以,

#include <stdio.h>
main() {
    double d; 
    scanf("%lf", &d); 
    printf("%f\n", d);
}
Run Code Online (Sandbox Code Playgroud)

与输入10.3产生10.300000.

  • `scanf()`需要`%lf`,但对于`printf()`,`%f`表示`double`(也适用于`float`,因为`float`在`参数列表的可变部分).`%lf`对`printf()`没有意义. (6认同)