c/c++格式化打印

笔记:

%o,八进制打印

%x, 十六进制,a-e代表11到15

%X,十六进制,A-E代表11到15

%i , 有符号十进制,同%d

打印不同数据类型时的格式:

C/C++ %d等简单格式类型总结

  • 博客分类: 
  • C/C++

   关于这部分的内容,自己每次用的时候都是去翻书,或者上网查,但是一直没有发现一篇文章很系统的介绍这一部分的内容,直到读完了《C陷阱与缺陷》,在附录中总结了格式化输入输出的符号,及其修饰符,今天暂且根据该书整理了简单格式类型部分,后续的修饰符会另写总结,本文旨在便于笔者查阅和方便各位博友。 

  简单格式类型: 
格式字符串中的每个格式项都是由一个%符号打头,后面接一个称为格式码的字符,格式码指明了格式转换的类型。 

首先最常用的就是%d, 以10进制打印一个整数。例如: 
C代码 

 收藏代码

  1. Printf(“2 + 2 = %d\n”, 2 + 2);  


将打印出Dos代码 

 收藏代码

  1. 2 + 2 = 4.  



%u格式项与%d类似,不同之处是%u打印无符号10进制整数。例如: 
C代码 

 收藏代码

  1. Printf(“%u\n”,-37);  


将打印出4294967259. 

%o, %x, %X用于打印8进制或者16进制的整数。 
%x, 用小写字母a, b, c, d, e, f来表示10到15的数位值 
%X, 用大写字母A, B, C, D, E, F来表示10到15的数位值。 
例如: 
C代码 

 收藏代码

  1. int n = 108;  
  2. printf( “%d decimal = %o octal = %x hex = %X HEX \n”, n, n, n, n);  


将打印出: 
Dos代码 

 收藏代码

  1. 108 decimal = 154 octal = 6c hex = 6C HEX  



%s 
用于打印一个字符串:与之对应的参数应该是一个字符指针,指向待输出的字符串首字符的地址,知道遇见一个空字符’\0’才终止。%s格式项所对应输出的字符串必须以一个空字符’\0’作为结束标志。 因为printf函数要一次来定位一个字符串何时结束。如果与%s对应的字符串并不是以空字符’\0’作为结束标志,那么printf函数将不断打印出其后面的字符,直到在内存中某处找到一个空字符’\0’为止。这时输出就可能相当的长。 
例如: 
C代码 

 收藏代码

  1. Printf (“There %s %d item%s in the list. \n”, n!=1? “are”: “is”, n, n!=1? “s”: “”);  


如果n为37,输出将是: 
Dos代码 

 收藏代码

  1. There are 37 items in the list.  


如果n为1, 输出将是 
Dos代码 

 收藏代码

  1. There is 1 item in the list.  


注: 
C代码 

 收藏代码

  1. Printf(s);  


与 
C代码 

 收藏代码

  1. Printf(”%s”, s);  


两者含义并不相同,前者把字符串s中的任何%字符视为一个格式项的标志,其后的字符会被视为格式码,如果除%%之外的任何格式码在字符串中出现,而后面有没有对应的参数,将会带来麻烦。而后者将会打印出任何一空字符结尾的字符串。 
NULL指针并不指向任何实际的内存位置,因此肯定也不可能指向一个字符串。因此, 
Printf(“%s \n”, NULL); 
的结果将难以预料。 

%c 
用于打印单个字符: 
C代码 

 收藏代码

  1. Printf(“%c”, c);  


等效于 
Putchar(c); 
但是前者的适应性和灵活性更好,能够把字符c的值嵌入某个更大的上下文中。与%c格式项对应的参数是一个为了打印输出而被转换为字符型的整型值。例如: 
C代码 

 收藏代码

  1. Printf( “The decimal equivalent of ‘%c’ is %d \n”, ‘*’, ‘*’);  


将打印出: 
Dos代码 

 收藏代码

  1. The decimal equivalent of ‘*’ is 42.  



%g, %e, %f这3个格式项用于打印浮点值。 
%g 
去掉数字尾缀的0,保留6位有效数字。因此, 
C代码 

 收藏代码

  1. Printf(“%g %g %g %g %g %g\n”, 1/1.0, 1/2.0, 1/3.0, 2/3.0, 1/4.0, 0.0);  


将打印出 
1         0.5  0.333333  0.666667(四舍五入)  0.25  0 
如果一个数的绝对值大于999999, 按%g的格式打印这个字符,会采用科学计数法来打印,例如: 
C代码 

 收藏代码

  1. Printf(“%g\n”, 123456789.0);  


将打印出: 
1.23457e+08 
对于很小的数值,除非该数的指数小于或等于-5, %g格式项才会采用科学计数法表示。因此: 
C代码 

 收藏代码

  1. Printf(“%g %g %g\n”, 3.14159e-3, 3.14159e-4, 3.14159e-5);  


将打印出: 
0.00314159  0.000314159    3.14159e-05 
%e和%f格式则在用于打印浮点数是,分别要求一律显式地使用指数形式和禁止使用指数来表示浮点数。例如: 
C代码 

 收藏代码

  1. Printf( “%e %f”, 123456789, 123456789)  


将打印出: 
Dos代码 

 收藏代码

  1. 1.234567e+08  123456789.000000  


注: 
%e和%f对有效数字的保留是小数点后6位有效数字,跟%g的总共6位有效数字不同。 

%E和%G格式项跟对应的%e和%g在行为上基本相同,但是科学计数法的e改用E。 
%%格式用于打印一个%符号。 
如有错误,请留言指正,谢谢。 

猜你喜欢

转载自blog.csdn.net/u010029439/article/details/88416634