ral*_*ldi 174 c scanf length-modifiers
为什么在阅读时scanf()需要l" %lf" double,何时printf()可以使用" %f",无论其参数是a double还是a float?
示例代码:
double d;
scanf("%lf", &d);
printf("%f", d);
Run Code Online (Sandbox Code Playgroud)
AnT*_*AnT 25
由于С99用C格式说明和浮点参数类型之间的匹配是之间是一致的printf和scanf.它是
%f 对于 float%lf 对于 double%Lf 对于 long double恰好,当类型float的参数作为可变参数传递时,这些参数被隐式转换为类型double.这就是为什么在printf格式说明符中%f并且%lf是等效和可互换的原因.在printf可以"交叉使用" %lf带float或%f带double.
但是没有理由在实践中真正做到这一点.请勿使用%f于printf类型的参数double.这是一种普遍的习惯,在C89/90次出生,但这是一个坏习惯.使用%lf中printf的double,并保持%f预留的float参数.
| 归档时间: |
|
| 查看次数: |
291325 次 |
| 最近记录: |