格式化输出printf
整数的输出--------有符号整数的输出。
多说⽆益,马上动⼿操作
int a = 123;
long L = 65537;
printf("12345678901234567890\n");
printf("a=%d------------(a=%%d)\n", a); //普通的输出,没事特别
printf("a=%6d------------(a=%%6d)\n", a); //默认右靠齐,长度6个单位,不够6位长度的左边补空格。
//正好表⽰该整数为正数,默认右靠齐,且长度为6个单位,+号算⼀个单位长度,故还需在左边添加两个空格
printf("a=%+6d------------(a=%%+6d)\n", a);
printf("a=%-6d------------(a=%%-6d)\n", a); //-号表⽰左靠齐,长度6个单位,不够6个需要在右边补空格。
printf("a=%+06d------------(a=%%+06d)\n", a); //默认右靠齐,正数,0表⽰格式控制,除去+号还需要在左边补两个0.
//左靠齐,6个单位长度,,0格式控制(实际长度⼩于长度),故还需在左边补3个0.但是左边左靠齐,故在右边补三个空格
printf("a=%-06d------------(a=%%-06d)\n", a);
//右靠齐,输出+号,6个单位长度,故在左边补三个0,格式控制符0的作⽤,因为实际长度7⼤于6,所以按实际长度输出
printf("a=%+6.6d------------(a=%%+6.6d)\n", a);
printf("a=%6.6d------------(a=%%6.6d)\n", a); //右靠齐,6个单位长度,左边补三个0.
//左靠齐,⾄少输出5位数字,因此需要在左边补2个0(实际长度⼩于长度),但要求长度为6,股还需在右边补⼀个空格
printf("a=%-6.5d------------(a=%%-6.5d)\n", a);
printf("a=%6.4d------------(a=%%6.4d)\n", a);//右靠齐,⾄少4位,故需要在左边补⼀个0,同时要在左边补两个空格
printf("a=%ld------------(a=%%ld)\n", L);//long输出,正常输出
printf("a=%hd------------(a=%%hd)\n", a);//长整型先转换为短整型,故取0x00010001的低16位也就是0x0001。故输出为1
实数的输出
double f=2.5e5;//表⽰2.5*10的5次⽅250000
printf(" 1234567890123456789\n");
printf("f=%15f----------(f=%%15f)\n",f);//长度为15,默认右靠齐,且double默认保留6位⼩数,故还需要在左边补两个空格
printf("f=%015f----------(f=%%015f)\n", f);//0格式控制,右靠齐,长度16个单位,故需在左边补两个0。
//左靠齐,.0表⽰保存0位⼩数(可以不写⼩数点),长度15个单位,故需要在左边补0,但是左靠齐,还需要在右边补空格。
printf("f=%-15.0f----------(f=%%-15.0f)\n", f);
printf("f=%#15.0f----------(f=%%#15.0f)\n", f);//#表⽰保存⼩数点,.0表⽰保存0位⼩数,右靠齐,长度15个单位,故还需要在左边补空格 printf("f=%+15.4f----------(f=%%+15.4f)\n", f);//右靠齐,保留4位有效⼩数,长度为15,需要在左边补3个空格
//以指数形式输出,长度为15,⼩数点为4位,前⾯有4个空格,e, E 接受浮点或者双精度值并将它转换为指数表⽰的形式[-] d.dde{+ | -} dd printf("f=%#15.4E----------(f=%%15.4E)\n", f);
printf("%lf", f);
⽆符号实数的输出
int a = -1;
unsigned u = 32767;
unsigned l = -32768;
printf("a=%d.a=%u----------(a=%%d,a=%%u)\n", a, a); //普通的输出,第⼆个因为a在内存中是0xFFFFFFFF,⽆符号数a=4294967295
//短整型占2个字节,所以需要类型转换,都要转换成短整型,取a得低16为0xFFFF,整形占4个字节,所以刚好以⽆符号形式输出。
printf("a=%hx.a=%x----------(a=%%hx,a=%%x)\n", a, a);
printf("u=%o.u=%x----------(u=%%o,u=%%x)\n", u, u);//输出为8进制和16进制
printf("u=%#010x----------(u=%%010x)\n", u);//以⽆符号的16进制输出,右靠齐输出占10位,格式控制符0,需要在7fff⾯前补0.
printf("u=%#10.10x----------(u=%%10.10x)\n", u);//16进制输出,10位数码,需要在7fff前⾯补6个0.
printf怎么格式化输出printf("L=%lx----------(L=%%lx)\n", l);//16进制⽆符号长整型计算中以补码形式来存储,故求-32768的补码
//16进制⽆符号形式输出,输出包括10位,左对齐,并显⽰0x,整形占4个字节,全部显⽰ffff8000后不够10位,在其左边补两个0,
//(0x是不包含在10个必显的字符中的,但要求总的输出满⾜14位,必须在输出值的右边补两个空格)
printf("L=%-#14.10x----------(L=%%-#14.10x)\n", l);
字符和字符串的输出
char ch = 'A';
printf("1234567890123456789\n");
printf("ch=%c----------(ch=%%c)\n", ch);//普通的输出没啥特别的
printf("ch=%4c----------(ch=%%4c)\n", ch);//默认右靠齐,且输出的字符宽度为4个字符,不⾜四个长度的在左边填补空格。
printf("ch=%-4c----------(ch=%%-4c)\n", ch);//负号表⽰左对齐,且输出长度为4个长度,不够4个长度的在右边补空格。
printf("ch=%04c----------(ch=%%04c)\n", ch);//默认右靠齐,且控制格式为空格,表⽰不够4个长度的在左边填0,因为有字符控制。 printf("ch=%s----------(ch=%%s)\n", "CCNU");//普通的输出,输出为字符串的形式。
printf("ch=%6s----------(ch=%%6s)\n", "CCNU");//输出的字符串,默认右靠齐,且字符串的长度为6位,不够6位的在左边添加空格 //默认右靠齐,保留3位⼩数,且整个字符串的长度为6个长度,控制字符为0,故在左边添加0.
printf("ch=%06.3s----------(ch=%%06.3s)\n", "CCNU");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论