C++中printf()函数的用法10-7

printf()的参数格式如下所示

%[flags][width][.precision][size]type

其中,type是必须要有的,而其他四个域是可选的。其中flags域用来控制输出是否包含正负号、空格、0、小数点和八进制或者十六进制标志的前缀。flags域中可以包含一个或多个符号来表示指令,这些符号出现的顺序是没有要求的。

1 对齐指令

printf()函数默认是右对齐的,例如

int i = 12;

printf("%6d", i);

其中,printf()函数中的参数“6”表示输出的长度是6,此时输出的结果是右对齐的,如图1所示。

 

图1 默认右对齐

在flags域中使用“-”符号使得输出变为左对齐,如图2所示。

printf("%-6d", i);

 

图2 对齐方式变为左对齐

2 输出正数有“+”

默认情况下,printf()函数只有在处理负数的时候才会输出其符号,处理正数时不会输出符号。可以将flags域设置为“+”,此时正数时会输出其符号,如图3所示。

int i = 12;

printf("%+d", i);

 

图3 输出“+”

3 补0指令

如果指定了输出结果的宽度,那么在宽度域前面的flags域中可以指定补0。

printf("%06d", i);

此时会在右对齐输出i的同时,将输出的空格位补0,如图4所示。

 

图4 补0

需要注意的是,如果此时flags域中含有“-”,即指定输出左对齐,则补0指令无效。

printf("%-06d", i);

此时的输出与图2相同。

4 输出空格

当要输出的是有符号的数字,并且是正数时,可以将flags域设置为空格,此时的输出前也相应有空格,如图5所示。

printf("% d", i);

 

图5 空格

当输出的数字是负数或者flags域中带有“+”指令时,空格指令无效。

printf("%+d", i);

此时的输出与图3输出相同。

5 #指令

当以八进制或者十六进制的格式输出指定数字时,即type的类型是“o”、“x”或者“X”时,flags域中的#指令的作用是为八进制或者十六进制添加前缀,如图6所示。

printf("%#x", i);

 

图6 添加前缀

需要注意的是,当type类型是“X”时,输出的前缀是“0X”。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值