printf中输出double的占位符、printf和scanf对于各种格式说明符可以接受的参数类型
来源:互联网 发布:linux运维面试简历项目 编辑:程序博客网 时间:2024/05/21 07:48
问:有人告诉我不能在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。)
- printf中输出double的占位符、printf和scanf对于各种格式说明符可以接受的参数类型
- printf和scanf对于各种格式说明符可以接受的参数类型
- scanf/printf中double的占位符
- printf中输出double的占位符
- printf中输出double的占位符
- printf中输出double的占位符
- scanf()和printf()的各种类型的数据的格式说明符
- C中printf 和 scanf 的格式说明符
- float、double、long double类型的变量在printf()和scanf()中的占位符使用区别
- 格式转换说明符scanf,printf
- 匹配printf()说明符的类型
- 关于printf()与scanf()在不同情形下可以接受不同类型的参数的一个例子。
- C函数printf和函数scanf的转换说明符中实现可变的字段宽度
- scanf格式控制符的完整格式和printf
- 使用printf输出各种格式的字符串
- 使用printf输出各种格式的字符串
- 关于printf输出格式类型的总结
- printf的格式输出
- ARM体系架构--基础篇
- Java中的异常处理
- PCIe工作原理初探
- 答读者问(13):有关应届生求职面试资料和职业规划等问题
- Java之美[从菜鸟到高手演变]之设计模式
- printf中输出double的占位符、printf和scanf对于各种格式说明符可以接受的参数类型
- 使用Unity3D50个技巧-50 Tips for Working with Unity (Best Practices)
- leetCode:Linked List Cycle II
- Linux下IPC总结
- unity3d 怎样在一定时间连按两下键
- Android 更新UI的两种方法——handler和runOnUiThread()
- qsort函数(快速排序用法举例)
- cc2530的时钟
- duilib list控件扩展