论CPP中输出流%f、%lf的区别

本文详细解析了C++中使用printf与scanf处理float与double类型数据的区别,特别是%f与%lf说明符的应用场景及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之所以写这个,是因为在POJ上用%lf\%lf%lf会爆炸…

首先,说明下,C++C++C++将实数分为单精度和高精度这些花里胡哨的东西…
printfprintfprintf%f\%f%f说明符的确既可以输出floatfloatfloat型又可以输出doubledoubledouble型。
根据一种“默认参数提升”的睿智东西,floatfloatfloat型在%f\%f%f输出时,会被提升为doubledoubledouble型。因此使用printfprintfprintf只会看到双精度数。
但作为printfprintfprintf的孪生兄弟scanfscanfscanf,情况就完全不同了,它接受指针,可这里没有类似的类型提升。向floatfloatfloat存储和向doubledoubledouble存储大不一样。也就是不会出现提升的骚操作。因此,scanfscanfscanf是要区别%f\%f%f%lf\%lf%lf

最后,讲一下总结出来的东西:

不管你三七二十一,只要用printfprintfprintf输出实数,直接用%f\%f%f就好了。而当你用scanfscanfscanf读入实数,就不得不把%f\%f%f %lf\%lf%lf分好了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值