13.7 有人告诉我在 printf 中使用 %lf 不正确。那么, 如果 scanf()  需要 %lf, 怎么可以用在 printf() 中用 %f 输出双精度数呢?

printf 的 %f 标识符的确既可以输出浮点数又可以输出双精度数。根据  ``缺省参数扩展" 规则, 不论范围内有没有原形都会在在类似 printf 的可 变长度参数列表中采用, 浮点型的变量或扩展为双精度型, 因此 printf()  只会看到双精度数。printf() 的确接受 %Lf, 用于输出长双精度数。 参见问题 12.11 和 15.2

参考资料: [K&R1, Sec. 7.3 pp. 145-47, Sec. 7.4 pp. 147-50]; [K&R2, Sec. 7.2 pp. 153-44, Sec. 7.4 pp. 157-59]; [ISO, Sec. 7.9.6.1, Sec. 7.9.6.2]; [H&S, Sec. 15.8 pp. 357-64, Sec. 15.11 pp. 366-78]; [CT&P, Sec. A.1 pp. 121-33]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)