scanf,printf输入输出float和double型数据
2012-10-29 22:15
134 查看
(1)printf的%f说明符既可以输出float型又可以输出double型。
根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。
(2)scanf对于float类型必须用%f,double必须用%lf
对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。
(3)事实上,printf中没有定义%lf,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。
要想保留小数位数,请使用(比如保留8位小数):
printf("%.8f",a);
根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。
(2)scanf对于float类型必须用%f,double必须用%lf
对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。
(3)事实上,printf中没有定义%lf,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。
要想保留小数位数,请使用(比如保留8位小数):
printf("%.8f",a);
相关文章推荐
- (转载)scanf,printf输入输出float和double型数据
- 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
- 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈
- scanf(),printf()和gets(),puts()在输入输出字符串时的区别
- c 语言的标准输入输出,scanf,printf
- 【转】关于使用printf和scanf对short进行输入输出的一段有趣对话
- 格式化输入输出浮点数据的细微问题(C标准:printf,scanf)
- C语言的输入输出格式符及附加格式说明符printf(),scanf()
- C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()
- fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出【转】
- c语言输入输出函数printf与scanf的用法格式
- 黑马程序员——数据类型、printf函数与scanf函数
- //用scanf和printf输入输出string//map的应用//Babelfish------三C
- C语言(2)数据类型、常量、Printf、sizeof、scanf的使用
- 输入输出 scanf和printf
- gcc中如何使用串口输出float double型数据
- C语言中的printf用%d输出float类型数据出现或以%f输出int型数据的结果为什么是0
- 关于float和double类型数据的输入输出
- close 造成标准输入输出scanf/printf 失灵
- 为什么printf()用%f输出double型,而scanf却用%lf呢?