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格式控制符的完整格式

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

printf中的format格式 %zd

在看代码的时候,看到个怪怪的符号,printf("%zd\n", s),见过奇怪的,没见过这么奇怪的format格式(原谅我的孤陋寡闻吧^-^),想破脑袋也没想起来在哪本书上见过这个家伙。得,乖乖的g...
  • u010602699
  • u010602699
  • 2016年08月20日 14:57
  • 2620

printf输出格式总结

printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。 printf函数调用的一般形式 pri...
  • sinat_34009734
  • sinat_34009734
  • 2016年06月12日 15:13
  • 27672

c语言printf()输出格式大全

转载自:http://www.cnblogs.com/tureno/articles/3630689.html 1.转换说明符       %a(%A)     浮点数、十六进制数字和p-(P-)记...
  • veronica001
  • veronica001
  • 2016年09月06日 16:00
  • 12593

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

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

C、C++变量命名规则

转载自:http://blog.sina.com.cn/s/blog_8a7012cf01017h9p.html 变量命名规则是为了增强代码的可读性和容易维护性。以下为C++必须遵守的变量命名规则:...
  • qingzai_
  • qingzai_
  • 2015年03月12日 10:14
  • 3675

C语言的基本单位是

()是构成C语言的基本单位 正确答案: A   你的答案: A (正确) 函数 过程 子程序 子例程 添加笔记 求解答(0) 收...
  • chengonghao
  • chengonghao
  • 2016年08月09日 10:37
  • 3501

printf()详解之终极无惑

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

printf()的用法

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

Java的printf方法

import java.util.Date;   /**  * 使用printf输出  */ /**关键技术点  * 使用java.io.PrintStream的printf方法实现C风格...
  • ginwafts
  • ginwafts
  • 2016年09月22日 16:05
  • 3481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:printf()中的格式问题
举报原因:
原因补充:

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