在w3resource.com的一篇文章中,我看到了以下代码:
文章中提到要使用三个浮点数。但在他们的解决方案(这段代码片段)中,他们使用了`%lf`格式说明符。 为什么他们使用`%lf`而不是`%f`? 我能否也使用`%f`来表示浮点数?
如果我使用`float`关键字而不是`double`,并且使用`%f`,会有什么问题吗? 对我来说输出结果是一样的。
double x, y;
pr1 = sqrt(pr1);
x = (-b + pr1)/(2*a);
y = (-b - pr1)/(2*a);
printf("Root1 = %.5lf\n", x);
printf("Root1 = %.5lf\n", y);
文章中提到要使用三个浮点数。但在他们的解决方案(这段代码片段)中,他们使用了`%lf`格式说明符。 为什么他们使用`%lf`而不是`%f`? 我能否也使用`%f`来表示浮点数?
如果我使用`float`关键字而不是`double`,并且使用`%f`,会有什么问题吗? 对我来说输出结果是一样的。
printf()
,那么%lf
和%f
可以互换使用。如果上下文是scanf()
,那么%f
用于读取到float
变量中,而%lf
用于读取到double
变量中(%Lf
用于读取到long double
变量中),这个区别非常重要。 - Jonathan Lefflerprintf()
,那么%lf
和%f
可以互换使用。如果上下文是scanf()
,那么%f
用于读取到float
变量中,而%lf
用于读取到double
变量中(%Lf
用于读取到long double
变量中),这个区别非常重要。 - Jonathan Lefflerprintf()
中,%lf
和%f
是可以互换使用的,因为任何类型为float
的可变参数都会根据适用于所有函数参数的默认参数提升规则转换为double
。相同的规则对于类型为float *
和double *
的参数没有影响(它们不会被转换为不同的类型),所以在scanf()
中需要区分%f
和%lf
。 - Ian Abbottprintf()
中,%lf
和%f
是可以互换使用的,因为任何类型为float
的可变参数都会根据适用于所有函数参数的默认参数提升规则转换为double
。相同的规则对于类型为float *
和double *
的参数没有影响(它们不会被转换为不同的类型),所以在scanf()
中需要区分%f
和%lf
。 - Ian Abbottprintf()
中,%lf
和%f
是可以互换使用的,因为任何类型为float
的可变参数都会根据适用于所有函数参数的默认参数提升规则转换为double
类型,而这些参数的类型没有被在作用域内的函数原型指定。相同的规则对于类型为float *
和double *
的参数没有影响(它们不会被转换为不同的类型),所以在scanf()
中需要区分%f
和%lf
。 - undefined