printf()中的格式问题

原创 2016年08月30日 11:33:53

    本文实例采用VS2010验证。

    本文为原创文章,转载请注明:http://write.blog.csdn.net/postedit/52366608


    printf()函数在控制台应用程序中经常用到,其原型如下:

int printf(
   const char *format [,
   argument]... 
)
    针对整型、浮点数、字符串中的format,现总结如下,以作备忘。

    

    //对于整型和字符串型数据,x代表数据总共占据的空间长度,当其小于输出数据本身的长度时,按原数据输出;当其大于输出数据本身长度时,用空格补充。通过%之后有               //无“-”判断数据左对齐还是右对齐

    printf("%xd",666);

    printf("%xs","abc");

    //对于浮点数,除具有前述特点外,还应注意,这种输出格式下,浮点数小数点之后总是占据6位(以0补充),另外小数点也占据一位,故而原数据可以看作6.660000,总共    //占有8位,再用前述规则判断。

    printf("%xf",6.66);

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //x代表输出数据占据的空间长度,y代表输出数据的精度,当y<原数据长度时,按原数据输出;x>y>原数据长度时,将原数据用0补充至y长度;当y>x且y>原数据长度时,将原

    //数据用0补充至y长度输出

    printf("%x.yd",666);

    //x代表输出数据占据的空间长度,y代表输出数据的精度,当y<原数据长度时,将原数据从左至右截取y长度输出;y>原数据长度时,将原数据输出,总长度取决于X和原数据

    //长度

    printf("%x.ys","abc");

    //x代表输出数据占据的空间长度,y代表输出数据小数点后的长度,当y<原数据小数点后数据长度时,将小数点后的数据长度截至y输出(舍位还是进1有待考虑,我验证的是       //四舍六入,若是5则先看其后有没有数据,有的话进位,没有的话看5前面的数据,为奇数舍去,为偶数进位。这和普遍约定的“四舍六入五成双”有点出入);当y>原数据小      //数点后数据长度时,将小数点后的数据长度用0补充至y输出

    printf("%x.yf",6.66);


    代码如下:

    

</pre><pre name="code" class="html">// _printf_.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	//整型
	printf("#####\n");//5个#
	printf("%2d\n",666);
	printf("%5d\n",666);//右对齐
	printf("%-5d\n",666);//左对齐
    //字符串
	printf("#####\n");//5个#
	printf("%2s\n","abc");
	printf("%5s\n","abc");//右对齐
	printf("%-5s\n","abc");//左对齐
	//浮点数
	printf("##########\n");//10个#
	printf("%2f\n",6.66);
	printf("%10f\n",6.66);
	printf("%-10f\n",6.66);
    ///////////////////////////////////////////
	printf("#####\n");//5个#
	printf("%5.2d\n",666);
	printf("%5.5d\n",666);//右对齐
	printf("%5.8d\n",666);//左对齐

	printf("#####\n");//5个#
	printf("%5.2s\n","abc");
	printf("%5.5s\n","abc");//右对齐
	printf("%5.8s\n","abc");//左对齐

	printf("#####\n");//5个#
	printf("%5.1f\n",6.55);
	printf("%5.1f\n",6.551);
	printf("%5.1f\n",6.65);
	printf("%5.5f\n",6.66);
	getchar();
	return 0;
}

    输出结果如下:


    

    暂且总结这样的规律:整型数据不能改变其值,但是可以左边补0;字符串数据可以截断但是不能添加别的字符补充长度;输出数据的长度需要综合考虑输出精度y、原数据长度以及给定长度x。

   

    本人也是初学C++,文中可能会有错误,总结也不够好,希望大家多多指导,共同进步!
















版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

printf()的用法

http://baike.baidu.com/view/1427555.htm 原来做事情不仔细,每次看printf的用法都没懂过,但是也算蒙混过关。现在自己终于懂得生活,所以好好找了下,这篇文章确...
  • xfortius
  • xfortius
  • 2012年08月23日 23:13
  • 39431

printf()详解之终极无惑

1.printf()简介printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。函数原型:int...

printf()用法详解

    正在C++/C言语中,有一类库函数称为准则输进输出函数,可以用来从键盘读取键进的字符,以及将字符正在屏幕上输出。这类函数的声明都包括正在头文件 stdio.h中。下面就先来谈谈主要的准则输出函...
  • rznice
  • rznice
  • 2010年06月11日 10:24
  • 2692

printf %m

看到过printf("%m\n"); 这样类似语句,这个到底是什么格式输出呢?查看资料,还是man大法好。 m      (Glibc extension.)  Print output of str...

printf格式控制符的完整格式

%  -  0  m.n  l或h  格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指...

C中printf的输出格式类型和%g的用法

%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式   printf()输出格式类型说明:   输...

printf格式控制符的完整格式

  printf的格式控制的完整格式:%  -  0  m.n  l或h  格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对...

C语言中printf格式详解

转自:http://blog.sina.com.cn/s/blog_60d6aadc0100undv.html printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下...

printf 格式化输出符号详细说明

%a             浮点数、十六进制数字和p-记数法(C99) %A    浮点数、十六进制数字和p-记法(C99) %c     一个字符(char) %C           一个...
  • xiexievv
  • xiexievv
  • 2011年09月28日 17:54
  • 89080

printf输出格式总结

printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。 printf函数调用的一般形式 pri...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:printf()中的格式问题
举报原因:
原因补充:

(最多只允许输入30个字)