用了好久scanf和printf的区别函数,还是没学太明白……有大佬能帮我解答一下吗?

在printf()中*充当变量的占位符

/*使用变量控制输出字符宽度*/
 

 
把*放在%和转换字符之间时会使得scanf和printf的区别()跳过相应的输入项。
\*跳过输入中的整数*\
 

《你必须知道的495个C语言问题》第12嶂标准输入输出库本章的很多问题都跟printf(问题12.7到12.12)和scanf和printf的区别(问题12.13到12.22)有关。本小节为大家介绍有人告诉我不能在printf中使用%lf为什么printf()用%f輸出double型,而scanf和printf的区别却用%lf呢

作者:孙云/朱群英来源:人民邮电出版社| 16:48

答:printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"規则(在printf这样的函数的可变参数列表中 不论作用域内有没有原型,都适用这一规则)float型会被提升为double型因此printf()只会看到双精度数。参见问題15.2

对于scanf和printf的区别,情况就完全不同了它接受指针,这里没有类似的类型提升(通过指针)向float存储和向double存储大不一样,因此scanf和printf的区別区别%f和%lf。

下表列出了printf和scanf和printf的区别对于各种格式说明符可以接受的参数类型

(严格地讲,%lf在printf下是未定义的但是很多系统可能会接受它。要确保可移植性就要坚持使用%f。)


我要回帖

更多关于 scanf函数 的文章

 

随机推荐