printf用法整理
来源:互联网 发布:java判断图片尺寸 编辑:程序博客网 时间:2024/05/01 16:46
首先,是基本的输出格式控制(用于和输出数据类型控制结合一起使用)
1.% 格式说明的起始符号
2.- 表示左对其,一般直接加在%号后
3.0 有0表示指定空位填充0,省略表示空位不填
4.m.n m表示域宽,也就是在输出设备上占的空间,字符数。n指的是精度,当输出float或double时,可以指定输出小数点后n位,默认n==6.一般直接输出浮点型数都是小数点后6位。
5.l l对整形而言表示long,对实型(又称实数或者浮点数)表示double
6.h 用于将整型的格式字符修正为short型
这里使用最简单的%d和%f大致说明格式控制符的作用
#include<stdio.h>#include<stdlib.h>int main(void){ int a = 100; //带 - 号左对齐 printf("%-10d\n",a); //默认右对齐 printf("%10d\n",a); //带0,指定空位都填充0 printf("%010d\n",a); double b = 22.22; //占10个字符域宽,且指定小数点后只显示一位,m.n格式只针对浮点型数有效 printf("%-10.1f\n",b); long c = 1000; //l+d表示long型,l+f表示double型 printf("%ld\t%lf\n",c,b); //h表示short型(一般有short int或short unsigned int) //当遇到%hd或%hu输出,注意它们的取值范围 int d = 32767; printf("%hd\n",d); //%hd只支持输出-32768~32767(65536个数字)间的数,超过了会自动转成这个范围内的数。如32768 == -32768,32769 == -32767.... int e = 65535; printf("%hu\n",e); //%hu只支持输出无符号的0~65535间的数,超过了也会自动转成这个范围内的数。如65536 == 0,65537 == 1 ....负数也是类似的推导 return 0; }
粘的输出格式对不齐,还是弄张图片:
接下来看具体的输出数据类型控制:(上面我们只使用到了%d和%f)
1.d 像我们上面使用到的,输出十进制整数,可以和格式控制符搭配成以下几种输出形式
%d 正常输出一个整形,按实际长度输出
%md m指定输出字段的宽度。如果m>字符本身宽度,则字符右对齐,左边填补上空格
%ld 输出长整型数据
2.o 以无符号八进制形式输出整数。对长整型可以使用%lo格式输出。also,也可以指定字段宽度输出,和d用法一样%mo。
3.x 以无符号十六进制形式输出整数。对长整型使用%lx格式输出。同上,%mx指定字段宽度。
4.u 以无符号十进制形式输出整数,即unsigned int。长整型使用%lu,短整型%hu。%mu指定字段宽度。
5.c 输出一个单字符,char
6.s 输出一个字符串,有以下几种用法
%s 正常输出一个字符串
%ms 和其他类型一样,指定字段宽度m。m>字符串宽度,字符串右对齐,左侧填充空格
%-ms 格式控制符号 - ,指定有效字符左对齐,在m位的宽度中,右侧填充空格,与上相反
%m.ns m字段宽度,但是只取有效字符串中左端n个字符,这n个字符右对齐,左侧填充空格
%-m.ns 效果同上,将得到的n个有效字符左对齐,右侧填充空格
最后面的两种情况中,当n>m时候,表示所有有效字符都选中,正常输出,之后就是左右对齐的事情了。
7.f 输出实数(也就是浮点型数)
%f 正常输出一个浮点型数,小数点后6位
%m.nf 指定宽度m,其中小数位数为n(不指定就为6)。如果你指定的m小于字段宽度,会按照f的规则输出到小数点后6位,整数部分正常输出,当m>(整数部分+1+6)[1表示小数点,n == 6],这时候才会向右对齐。否则正常输出全部有效字段,小数点不足6位数补0
double f = 111.11111; printf("%011f\n",f); //这时 m = 11 > 10 = (3+1+6),右对齐,空白位补了个0 printf("%011.3f\n",f);//限制小数点后3位,右对齐,其余位补0/*输出0111.1111100000111.111*/double f = 111.11111; printf("%05f\n",f); //这时 m = 5< 10 = (3+1+6),输出全部有效字段/*输出111.111110*/
%-m.nf 同上,如果m>(整数部分+1+6),左侧对齐,右侧补空格
8.e 以指数形式输出6位小数,指数部分占5或4位
%e 按照上面规则正常输出
%m.ne
%-m.ne 与浮点数类似,m表示整个输出的宽度,n表示所占的小数位数,这里整数部分肯定是1位。
double d = 111111111.111; printf("%010.1e\n",d); //占10位宽度,1位小数点,指数部分有4位,说明前面空了3位,(%后加0表示空白位用0填充)/*输出0001.1e+08*/
9.g 自动选择f格式或e格式中较短的一种输出。并且不输出无意义的0
上面两种方式的结合使用就能正常应对绝大部分字符输出情况了,剩下的是几种特殊的字符和printf的特殊用法
1.字符串%的输出
使用连续两个%号来输出
printf("%f%%",1.0/3);/*输出0.333333%*/
这里提到一点:
对于单精度数,用%f格式符输出时,仅仅前7位是有效数字,小数6位
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位
这和浮点数在计算机中存储的方式有关,这里不作过多解释,下一章整理一下。
2.对于m.n的格式,还可以使用如下的方法来表示
//char ch[20];//printf("%*.*s\n",m,n,ch);//可以通过传入参数来对格式进行控制char ch[20] = "abcdefigh";int m = 10;int n = 5;printf("%*.*s\n",m,n,ch);/*输出 abcde*/
3.输出格式%n可以将所输出的字符串的长度赋给一个变量
int strlen;printf("hello world%n",&strlen);printf("strlen = %d\n",strlen);/*输出hello worldstrlen = 11*/
有什么错误请指出
- printf用法整理
- printf 用法
- printf()用法
- printf()用法
- printf用法
- printf()用法
- printf的一些用法
- printf的一种用法
- printf的用法
- printf基本用法
- printf的用法(总结)
- 懒人记事: printf用法
- printf()用法详解
- printf()用法详解
- java printf用法大全
- printf的用法
- printf()的用法
- printf()用法详解
- centos 彻底删除mysql
- laravel自定义错误输出的内容
- 【Android动画九章】-动画插值器和动画监听器
- mac配置adb命令行
- utilities(matlab)—— 图像加噪
- printf用法整理
- 无刷新天气预报
- android开发笔记之多媒体—AudioManager(控制音量)
- 完全二叉树 满二叉树
- SIP-Session Initiation Protocol(Abstract)
- 列车调度(Train)
- 教你爱上Block(闭包)
- Git使用教程(四)
- Windows7下安装Qt5.6时提示msvcp120.dll丢失的解决方案