printf中输出double的占位符
来源:互联网 发布:知画生孩子第29集 编辑:程序博客网 时间:2024/05/18 02:57
今天A了一道POJ2253,wa了好久,后来看了discuss才知道printf中输出double是应该用%f 而不是%lf的.只是大多数编译器都会识别而已,而也就造成了我们长期都不知道正确的写法.这儿有一篇文章,有点帮助:
转自:http://book.51cto.com/art/200901/106880.htm
12.9
问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?
答:printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"规则(在printf这样的函数的可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。参见问题15.2。
对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。
下表列出了printf和scanf对于各种格式说明符可以接受的参数类型。
格式
printf
scanf
%c
int
char *
%d, %i
int
int *
%o, %u, %x
unsigned int
unsigned int *
(续)格式
printf
scanf
%ld, %li
long int
long int *
%lo, %lu, %lx
unsinged long int
unsigned long int *
%hd, %hi
int
short int *
%ho, %hu, %hx
unsigned int
unsigned short int *
%e, %f, %g
double
float *
%le, %lf, %lg
n/a
double *
%s
char *
char *
%[...]
n/a
char *
%p
void
void **
%n
int *
int *
%%
none
none
(严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。)
转自:http://blog.csdn.net/cll131421/article/details/7746344
- printf中输出double的占位符
- printf中输出double的占位符
- printf中输出double的占位符
- scanf/printf中double的占位符
- printf中输出double的占位符、printf和scanf对于各种格式说明符可以接受的参数类型
- float、double、long double类型的变量在printf()和scanf()中的占位符使用区别
- c语言中 printf及 占位符%
- 使用printf()函数输出数据时,占位符的快速入门。(初学者)
- C语言 - printf的占位符(%) 异常
- printf占位符
- Java printf()占位符
- 20170610 printf占位符
- C语言中double型数据格式化输入输出的转换字符(占位符)
- IOS中NSLog输出的格式化占位
- C 中int float。。。double类型 占位符
- printf中用%d输出float或者double
- printf函数中使用输出控制符的原因
- 浅谈printf中以"f"作为格式符的输出
- Python Socket 编程——聊天室示例程序
- Linq多表链接分页,Select new{"需要的字段列.."},配合杨涛Mvcpager,前台遍历展示自定义字段
- 使用消息队列的 10 个理由
- Linux常用命令速查手册
- 自动换行后进行缩进
- printf中输出double的占位符
- UIKeyboardWillShowNotification 真机中,在键盘为中文键盘时,会调用多次
- ORA-12154: TNS: 无法解析指定的连接标识符
- <c:forEach varStatus="status">中 varStatus的属性简介
- 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
- 63cbeee9afe8f947d8f5fe1774bcca55
- js验证input输入框(字母,数字,符号,中文)
- 操作系统面试题整理
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)