欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

printf()函数的使用与注意

程序员文章站 2022-07-15 09:04:17
...

printf()

printf()函数是输出函数
请求printf()函数打印数据的指令要与待打印的数据的类型相匹配,他们指定了如何把数据转换成可显示的形式。
ANSIC标准提供的转换说明

转换说明 输出
%a 浮点数、十六进制数和p记数法
%A 浮点数、十六进制数和p记数法
%c 单个字符
%d 有符号十进制整数
%e 浮点数,e记数法
%E 浮点数,e记数法
%f 浮点数,十进制记数法
%g 根据值的不同,自动选择%f或%e。%e格式用于指数小于-4或者大于后等于精度时
%G 根据值的不同,自动选择%f或%e。%e格式用于指数小于-4或者大于后等于精度时
%i 有符号十进制整数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 无符号十六进制整数,使用十六进制数0f
%X 无符号十六进制整数,使用十六进制数0F
%% 打印一个百分号

注:p记数法是c99里的十六进制浮点数的记数法,类似e,但不同,数以0x开头,然后是16进制浮点数的部分,接着是p,后面是2为低的阶码。
列如 0xb.1e5
b.1e是16进制浮点数,乘后面的p5。p5等于2的5次方。
e记数法,e是指数的意思,2.735e2=2.735×10的2次方。

printf()的格式

printf(格式字符串,待打印项1,待打印项2,·······);

printf("这个数是%d,那个数是%d",num,num1);

格式字符串就是双引号括起来的内容,num对应的第一个%d,num1对应第二个%d
待打印项1,代打印项2等都是要打印的项。他们可以是变量,常量,甚至是在打印之前先要计算的表达式。
格式字符串中的转换说明一定要与后面的每个项相匹配,若忘记这个基本要求会导致严重的后果。
如果只打印短语和句子,就不需要使用任何的转换说明。如果只打印数据,也不用加入说明文字。

printf()的转换说明修饰符

在%和转换字符之间插入修饰符可修饰基本的转换说明

修饰符 含义
数字 最小字段宽度,如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段
.数字 精度,对于%e,%E和%f转换,表示小数点右边数字的位数。 对于%g和%G转换,表示有效数字最大位数。 对于%s转换,表示待打印字符的最大数量。 对于整型转换,表示待打印数字的最小位数。
h 和整型转换说明一起使用,表示short int或unsigned short int类型的值。
hh 和整型转换说明一起使用,表示signed char或unsigned char类型的值
j 和整型转换说明一起使用,表示intmax_t或uintmax_t类型的值,这些类型定义在stdint.h中
l 和整型转换说明一起使用,表示long int或unsigned long int 类型的值
ll 和整型转换说明一起使用,表示long long int 或unsigned long long int 类型的值
L 和浮点转换说明一起使用,表示long double类型的值
t 和整型转换说明一起使用,表示ptrdiff_t类型的值。ptrdiff_t是俩个指针差值的类型
z 和整型转换说明一起使用,表示size_t类型的值。size_t是sizeof返回的类型

printf()中的标记

标记 含义
- 待打印项左对齐。即,从字段的左侧开始打印该项
+ 有符号值若为正,则在值前面显示加号;若为负,则在值前面显示减号
空格 有符号值若为正,则在值前面显示前导空格(不显示任何符号);若为负,则在前面显示减号。+标记覆盖一个空格
# 把结果转换成另外一种形式。如果是%o格式,则以0开始;如果是%x或者%X格式,则以0x或者0X开始;对于所有的浮点数,#保证了即使后面没有任何数字,也要打印一个小数点的字符。对于%g或者%G格式,#防止结果后面的0被删除
0 对于数值格式,用前导0代替空格填充字段宽度,对于整数格式,如果出现-标记或指定精度,则忽略该标记

printf()的返回值

printf的返回值是返回打印字符的个数。如果输入错误,则返回一个负值。
printf()的返回值是其打印输出功能的附带用途,通常很少用到,但在检查输出错误时可能会用到。如果一张已满的CD或DVD拒绝写入时,程序应该采取相应的行动。

相关标签: c语言