C语言格式输出函数printf详解( 二 )


#
对c、s、d、u类无影响;
对o类,在输出时加前缀o;
对x类,在输出时加前缀0x;
对e、g、f 类当结果有小数时才给出小数点 。
3) 输出最小宽度
用十进制整数来表示输出的最少位数 。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0 。
4) 精度
精度格式符以“.”开头,后跟十进制整数 。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分 。
5) 长度
长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出 。
【例4-4】

  1. #include
  2. int main(void){
  3. int a=15;
  4. long float b=123.1234567;
  5. // 原来b的定义为 float b=123.1234567;
  6. // 经读者@邓小良反馈,笔者发现会溢出,在前面加了long
  7. double c=12345678.1234567;
  8. char d='p';
  9. printf("a=%d\n", a);
  10. printf("a(%%d)=%d, a(%%5d)=%5d, a(%%o)=%o, a(%%x)=%x\n\n",a,a,a,a);// %% 可以输出 %
  11. printf("a=%f\n", b);
  12. printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n",b,b,b,b);
  13. printf("c=%f\n", c);
  14. printf("c(%%lf)=%lf, c(%%f)=%f, c(%%8.4lf)=%8.4lf\n\n",c,c,c);
  15. printf("d=%c\n", d);
  16. printf("d(%%c)=%c, d(%%8c)=%8c\n",d,d);
  17. return 0;
  18. }

运行结果:
C语言格式输出函数printf详解

文章插图
本例中:
使用函数时还要注意一个问题,那就是输出表列中的求值顺序 。不同的编译系统不一定相同,可以从左到右,也可从右到左 。Turbo C是按从右到左进行的 。请看下面两个例子 。