关于printf输出格式类型的总结

一、函数调用形式
printf函数调用的一般形式为:
printf(“格式控制字符串”, 输出表列)
其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
“%d”表示按十进制整型输出;
“%ld”表示按十进制长整型输出;
“%c”表示按字符型输出等。
非格式字符串原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。
格式字符串
函数原型在头文件“cstdio”中
二、在Turbo C中格式字符串的一般形式为:
[标志][输出最小宽度][.精度][长度]类型。
其中方括号[]中的项为可选项。

各项的意义介绍如下。

1) 类型
类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
格式字符 意义
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串

2) 标志
标志字符为 -、+、# 和空格四种,其意义下表所示:
标 志 意义
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)
空格 输出值为正时冠以空格,为负时冠以负号
#
对下述的作用:
{
对c,s,d,u类无影响;
对o类,在输出时加前缀o;
对x类,在输出时加前缀0x;
对e、g、f 类当结果有小数时才给出小数点。
}
3) 输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

4) 精度
精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

三、各进制数常量的输出
八进制整型常量:由正、负号 和 0至7的数码组成,并且第一个数码必须是0
十进制整型常量:由正、负号 和 0至9的数码组成,并且第一个数码不能是0
十六进制整型常量:由正、负号 和 数码0至9、a至f或A至F组成,并且要有前缀0x

四、举例说明
1、

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a=502,b=024;//b为八进制数,输出时转化为十进制数输出
printf("%2d,%2d\n",a,b);//输出的变量列宽为2。如果这里的列宽值大于实际变量列宽,输出时就会自动补全,即以实际为准。如果列宽值大于实际,就左端补空格。%2d右对齐,左边补空格,%-2d左对齐,右边补空格;
}

输出为:
502,20

2、
printf(“%-6.3f\n”,a);
其中,“-”号还是表示左对齐,6表示提供6个字符空间用于输出,小数点后面的3表示小数部分输出3位,如:
(1) a=1.3125时,输出:1.312_
(2) a=1.2时,输出:1.200_
(3) a=1.12时,输出:1.120_
(4) a=10.123时,输出:10.123
(5) a=100.125时,输出:100.125
说明:
如果小数部分超过3位,则会缩减到3位,如(1);
如果小数部分低于3位,则会补充0到3位,如(2)和(3) ;
如果小数部分通过缩减或补充之后a的位数还是超过了6位,则还是直接输出了,如(5)。
从上面还可以看出,小数点是占用1位的,而小数部分则肯定占用3位,剩下2位由整数部分占用;整数部分是不会被缩减的,如(5)。

3、

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int a=502,b=024;
char str1[]="hel";
char str2[]="hello,world";
printf("%2d,%2d\n",a,b);
printf("%5.9s\n",str1);//输出最少5个字符串,最多9个字符串,右对齐
printf("%5.9s\n",str2);
system("pause");
return 0;
}

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值