格式化输出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("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");


浙公网安备 33010602011771号