printf函数:
  原型:extern void printf(const char *format,...);
 
  用法:#include <stdio.h>
 
  功能:格式化字符串输出
 
  说明:format指定输出格式,后面跟要输出的变量
        目前printf支持以下格式:
          %c        单个字符
          %d        十进制整数
          %f        十进制浮点数
          %o        八进制数
          %s        字符串
          %u        无符号十进制数
          %x        十六进制数
          %%        输出百分号%
        一个格式说明可以带有几个修饰符,用来指定显示宽度,小数尾书及左对齐等:
                 左对齐
                   在一个带符号数前加" "或"-"号
                 域宽用前导零来填充,而不是用空白符
        域宽是一个整数,设置了打印一个格式化字符串的最小域。精度使用小数点后加数字表示的,
        给出每个转换说明符所要输出的字符个数。

 下面这个例子运行以后自己看了好久都没有看懂:
==================================================
#include<stdio.h>

int main(){

 int i = 43;

 printf("%d\n",printf("%d",printf("%d",i)));
    getch();
}

结果输出为:4321
===================================================================================
printf()返回的是一个int值,表示打印的字符数,最里面的一个printf()输出为×××数43,字符长度为2,这个printf()作为第二个printf()中的一个参数,第二个printf()将会输出×××数43的字符长度2,同样第一个输出×××数2的字符长度1,所以运行结果为4321。

下面这个例子很好的说明:
#include<stdio.h>

int main(){

 int a;
 int b;
 int c;
 int i = 123456; 

 

 printf("\n=======此部分输出不用管=============\n");
 a = printf("======%d",i);
 b = printf("********%d",printf("%d",i));
 printf("\n=======此部分输出不用管=============\n\n\n");

 printf("********************************************************************");
 printf("\n第一个printf结果:");
 printf("%d",a);
 printf("\n第一个printf语句中输出6个等号和123456,字符长度总共为12");
 printf("\n====================================================================");
 printf("\n第二个printf结果:");
 printf("%d",b);
 printf("\n第二个printf输出8个星号和他紧后面printf输出结果的字符长度1,总共为9");
 printf("\n**********************************************************************");

 getch();
}

运行结果:printf的返回值问题(转)_printf