格式描述串

"格式描述串"是由一系列的"格式转换说明符号"组成,格式转换说明符号的描述形式如下:

 

              % [+][-] 0 m[.n] [输出精度] <形式字母>

 

%c 字符 

%d 十进制整数

%e 浮点数,指数e的形式

%s 字符串 %E 浮点数,指数E的形式

%u 无符号十进制整数

%f 浮点数,小数点形式

%g 输出%f与%e较短者

%o 无符号八进制整数

%G 输出%F与%E较短者

%x 无符号十六进制整数,以0~f表示

%X 无符号十六进制整数,以0~F表示

%l 长整型,加在d,o,u,x,X之前,如%ld(注意%l是英文字母l,不是数字1)

 

(1)形式字母:制定输出格式,如表

         d:十进制整型数

          i:十进制整型数

         x:十六进制整型数

         o:八进制整型数

         u:无符号十进制整型数

         c:单个字符;

         s:字符串

         e:指数形式的浮点数

         f:小数形式的浮点数

         g:e和f中比较短的一种

         p:显示变量所在的内存地址

         n:它不是向printf()传递格式化信息,而是令printf()把自己已经输出的字符总数放到相应变元指 的整形变量中

         %:符号%本身;

 

(2):输出精度如果形式字母是d,x,o.u,则可以指定如下两类精度 l:long型输出精度 h:short型输出精度 默认时为int型精度 如:long x=123454578;printf("%d",x);

     如果形式字母为e,f,g的时候,则指定l的 时候为double精度,不指定为float精度;

 

(3):m[.n]指定输出长度,如果输出的是实例,则m表示该项输出占用字符位置的总长度,n表示小数部分的字 符长度,如float x=4.56;printf("%7.4f",x);

 

(4)0:指定不被使用的空位置填写0,入股不指定使用0,则不使用的位置为空白.该项仅仅对树枝输出时才可 以指定,对字符串输出不用指定.例如 int x=234; printf("%05d",x);//00234 printf("%5d",x);//**234 (5)[+][-]:指定输出位置,如果指定+或者缺省时为右对齐,如果为"-"的时候为左对齐;

 

 

 

一、格式符含义

 

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、指定输出宽度的同时指定左对齐可在宽度前插入“-”来实现

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/evanever/archive/2008/07/07/2620891.aspx"格式描述串"是由一系列的"格式转换说明符号"组成,格式转换说明符号的描述形式如下:

 

              % [+][-] 0 m[.n] [输出精度] <形式字母>

 

(1)形式字母:制定输出格式,如表

         d:十进制整型数

          i:十进制整型数

         x:十六进制整型数

         o:八进制整型数

         u:无符号十进制整型数

         c:单个字符;

         s:字符串

         e:指数形式的浮点数

         f:小数形式的浮点数

         g:e和f中比较短的一种

         p:显示变量所在的内存地址

         n:它不是向printf()传递格式化信息,而是令printf()把自己已经输出的字符总数放到相应变元指 的整形变量中

         %:符号%本身;

 

(2):输出精度如果形式字母是d,x,o.u,则可以指定如下两类精度 l:long型输出精度 h:short型输出精度 默认时为int型精度 如:long x=123454578;printf("%d",x);

     如果形式字母为e,f,g的时候,则指定l的 时候为double精度,不指定为float精度;

 

(3):m[.n]指定输出长度,如果输出的是实例,则m表示该项输出占用字符位置的总长度,n表示小数部分的字 符长度,如float x=4.56;printf("%7.4f",x);

 

(4)0:指定不被使用的空位置填写0,入股不指定使用0,则不使用的位置为空白.该项仅仅对树枝输出时才可 以指定,对字符串输出不用指定.例如 int x=234; printf("%05d",x);//00234 printf("%5d",x);//**234 (5)[+][-]:指定输出位置,如果指定+或者缺省时为右对齐,如果为"-"的时候为左对齐;

 

 

 

一、格式符含义

 

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、指定输出宽度的同时指定左对齐可在宽度前插入“-”来实现

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/evanever/archive/2008/07/07/2620891.aspx

你可能感兴趣的:(c,float)