Chinaunix首页 | 论坛 | 博客
  • 博客访问: 668917
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: C/C++

2010-10-12 15:13:32

C语言的格式符

 
一、格式符含义
1、d格式符:按十进制格式输出。
%d         输出数字长度为变量数值的实际长度
%md        输出m位(不足补空格,大于m位时按实际长度输出)
%ld,%mld  l(小写字母L)表示输出“长整型”数据
%0md,%0mld 0(数字0)表示位数不足m时补0
注:%后面的m(位数控制)、0(位数不足补0)对于其他格式符也适用。   
例:(□表示空格)
int i=123;
long j=123456;
printf("%d□5d□05d,□ld□8ld□08ld",i,i,i,j,j,j);
输出:123□□□123□00123,□123456□□□123456□00123456
2、o(字母)格式符:按八进制格式输出。(不会出现负数格式)
3、x格式符:按十六进制格式输出。(不会出现负数格式)
4、u格式符:用于输出unsigned类型数据。
例:main() 
{
  unsigned int a=65535;
  int b=-2;
  printf("a=%d,%o,%x,%u\n",a,a,a,a);
  printf("a=%d,%o,%x,%u\n",b,b,b,b);
 
输出:a=-1,177777,ffff,65535
     b=-2,177776,fffe,65534
5、c格式符:以字符形式输出。
6、s格式符:以字符串格式输出。
例:printf("%s","CHINA");
%ms    m指定宽度(不足时左补空格,大于时按实际宽度输出)
%-ms   左对齐,不足m时右补空格
%m.ns  输出占m个字符位置,其中字符数最多n个,左补空格
%-m.ns 同上,右补空格
7、f格式符:按实数格式输出。
%f       按实数格式输出,整数部分按实际位数输出,6位小数
%m.nf    总位数m(含小数点),其中n位小数
%-m.nf   同上,左对齐
例:main()
{ float x, y;
  x=111111.111; y=222222.222;
  printf("%f", x+y);  
 
程序输出: 333333.328152(实数运算中误差不可避免)
例:main()
{ double x,y; double x2,y2;
  x=1111111111111.111111111; y=2222222222222.222222222;
  x2=1111111111111.111; y2=2222222222222.222;
  printf("%f %f", x+y, x2+y2);       /* 13位整数,9位小数 */   
 
程序输出: 3333333333333.333010 3333333333333.333010(相同)
注意
    从以上两例可以看出,实数运算中误差不可避免,double比float精度高。
    float实数(单精度)的有效位数是7位,double实数(双精度)的有效位数是16位,超过有效位数的输出和输入均无意义。
例:
main()
float f=123.456;
  printf("%f□□%10f□□%10.2f□□%.2f□□%-10.2f",f,f,f,f,f);  
 
输出结果:
  123.455994□□123.455994□□□□□□123.46□□123.46□□123.46
8、e格式符:以指数形式输出实数。%e 输出13位,其中:1位整数,1位小数点,6位小数,5位指数(含字符e和指数的符号)
9、g格式符:根据数值大小,自动选择f或e格式输出。
二、使用注意
1、%是printf()的格式说明符,若要直接输出字符%,在格式控制中使用两个连续的%。
例:printf("%f%%", 1.0/3)     输出: 0.333333%。
2、通常在有格式字符o和x按八进制和十六进制形式输出整数时,在数值前不出现0和0x,可在%和格式字符间插入#来实现。
例:printf(“%o,%#o,%x,%#x\n”,10,10,10,10);
输出:12,012,a,0xa
3、指定输出宽度的同时指定左对齐可在宽度前插入“—”来实现。
阅读(1730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~