类型 打印
unsigned 无符号类型
%u打印变量,绝对不会出现负数
八进制和十六进制总是作为无符号类型处理
l <L> 修饰符只对用于整数的格式码有意义
size_t
为了系统之间的移植而定义
32位系统上, 定义为 unsigned int
64位系统上,定义为 unsigned long
更确切的说
32位系统上是32位无符号整型
64位系统上是64位无符号整型
char类型
char类型存储字母和标点符号之类的字符
char类型实际存储和操作的是整数而不是字符
“
%c”,打印出字符类型
“
%d”,打印出整数类型
unsigned char ( 0--255)
signed char ( -128-- 127)
显示原则:数据转换成补码,取低八位,十进制显示
65表示大写字母A
97表示小写字母a
浮点类型
float(单精度)类型表示6位有效数字.4个字节32位存储一个浮点数
8位用于表示指数及其符号,24位用于表示非指数的部分及其符号
double(双精度)类型表示10位有效数字.8个字节64位存储一个浮点数
通过f或F后缀使编译器把浮点常量当作float类型. 2.3f
%g 打印double和float类型,去掉数字尾缀的0,保留6位有效数字
%% 用于打印一个%符号
位、字节和字
最小存储单位称为位(bit).可以容纳两个值(0或1)
字节是常用的计算机存储单位.一个字节均为8位
字是自然的存储单位
类型 格式
宽度修饰符
宽度修饰符对任何格式码都有效,甚至%%也不例外
若待打印的数值不能填满位置,它的左侧就会被补上空格字符
%md 指定以宽度m输出数据
%0md 以宽度m输出数据,不足m,左补0
%m.nf 以宽度m输出实型小数,小数点后位数为n位
精度修饰符
作用是控制一个数值的表示中将要出现的数字位数,或者用于限制将要打印的字符串中应该出现的字符数
%.md %.mo %m.x %.mu 指定了打印数字的最少位数
若待打印的数值并不需要这么多位数的数字表示,前面补上0
%.me %.mE %.mf 指定了小数点后应该出现的数字位数
%.mg %.mG 指定了打印数值中的有效数字位数
%.ms 指定了将要从相应的字符串中打印的字符数
%c和%%,精度修饰符将被忽略
标志
微调格式项的效果
显示宽度大于被显示位数时,数据尾部以显示区的右端对齐,左端则被填充空白字符
- 要求显示方式改为左端对齐,在右端填充空白字符
+ 规定每个待打印的数值在输出时都应该以它的符号(正号或负号)作为第一个字符
空白字符作为标志字符,含义是:若某数是一个非负数,就在它的前面插入一个空白字符
# %#x与%#X要求打印的十六进制数值前面分别加上0x或0X
%#o 要求打印的八进制数值前面加上0
#对浮点数格式的影响
一:要求小数点必须被打印出来,即使小数点后没有数字也是如此
二:若用于%g或%G格式项,打印出的数值尾缀的0将不会被去掉
可变域宽与精度
printf函数可以间接的指定域宽和精度,用 * 替换域宽修饰符或精度修饰符