关于输出用%lf还是%f的问题
2012-12-10 16:10
239 查看
问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢? 答:printf的%f说明符的确既可以输出float型又可以输出double型。根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。 (严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。) 对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。 此回答摘自POJ1113 DISCUSS,当时错了很多次,最后才发现是输出用来%f
相关文章推荐
- 【转】关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- 关于输出用%lf和%f的问题
- C++中关于string类型究竟能不能用cout输出的问题
- 关于Android Logcat打印输出中文乱码问题的解决方法
- 关于VMware 的默认网卡是e1000还是79c970(vlance)的问题
- 关于FlashPrinter转换文档未输出swf文件问题
- 关于textarea标签输出数据库数据时出现大量空格导致格式不一致的问题
- 关于c/c++ 工程中获取文件路径、设置输出文件路径的问题
- 关于一些UI的property应该使用retain、strong还是weak的问题
- 数据库文本中关于换行和回车等特殊字符的输出显示问题
- 今天看StarterKit.Communities中的关于获取路径部分,发现一个问题?难道老外也会不仔细看MSDN,还是?
- 关于Oracle DataGuard 同步 还是 异步 的问题
- 关于.Net与J2EE的比较,到底用微软平台还是Java平台的问题
- 【随笔】关于算法竞赛中使用文件输入输出和文件名的规定等问题