% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
---------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。
①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用"%mo"格式输出。
例:
main()
{ int a = -1;
printf("%d, %o", a, a);
}
运行结果:-1,177777
秒十位计数单元为进制计数器,需要进制转换。3143表3-1 存储器的用途和特点名称简称用途特点高速缓冲存储器cache高速存取指令和数据存取速度快但存储容量小主存储器主存存放计算机运行期间的大量程序和数据存放系统程序和大型数据文件及存取速度较快存储容量不大外存储器外存存储容量大位成本低1533.1.3 存储器的技术指标1. 存储容量:指它可存储的信息的字节数或比特数通常用存储字数单元数 存储字长每单元的比特数表示。时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为进制计数器,不是的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行进制转换。
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
同样也可以指定字段宽度用“%mu”格式输出。同样也可以指定字段宽度用"%mx"格式输出。这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1的内存16进制表示形式,在win32平台上,一个short型占2个字节,所以我们自然希望用4个16进制数字来打印它:。
⑤c格式:输出一个字符。
⑥s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
(1)指定整型数据的输出宽度:%md,若实际位数小于m,则左端补空格,若大于m,则按实际位数输出。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,注意:如果n未指定,默认为0.
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。第20行输出字符量d,其中“%8c ”指定输出宽度为8故在输出字符p之前补加7个空格。
如果是sprintf(desc, "%m.ns", sour); 如果desc空间够的话,会在%m.ns 串 的结尾自动补null字符,不同于strncpy.
前者具有更高的空间复杂度printf格式化输出详细说明,因为原先只需要单个字节表示的ascii字符,现在也必须用多个字节来表示,显然更为耗费存储空间。数组 (array) 布尔值 (boolean) 字节 (byte) 有符号字符 (char) 无符号字符 (char byte,没有多少人用) 颜色参考值 (colorref) 坐标差(长度 shortint) double word 函数 handle(句柄) 整型 长整型 (long int) long pointer 类的成员 短整型 (short int) near pointer pointer 字符串型 以 null 做结尾的字符串型 (string with zero end) word。如dest 非null,则wcstombs() function把宽字符src转换成多字符dest,最多转换n字节。
⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度printf格式化输出详细说明,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
⑧e格式:以指数形式输出实数。可用以下形式:
%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和"-"字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
---------------------------------------
关于printf函数的进一步说明:
如果想输出字符"%",则应该在"格式控制"字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3);
输出0.333333%.
---------------------------------------
对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位。
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位。
------------------------------------------------------------------
printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型。例如,在打印整数是使用%d符号,在打印字符是 用%c 符号。这些符号被称为转换说明。因为它们指定了如何不数据转换成可显示的形式。下列列出的是ANSI C标准printf()提供的各种转换说明。
转换说明及作为结果的打印输出%a 浮点数、十六进制数字和p-记数法(C99)
%A 浮点数、十六进制数字和p-记法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号
//还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定 printf("%.*s \n", 8, "abcdefgggggg");
printf("%*.*f \n", 3,3, 1.25456f);使用printf ()函数 printf()的基本形式: printf("格式控制字符串",变量列表);#includeint main()
{
//for int
int i=30122121;
long i2=309095024l;
short i3=30;
for i2 = 65 to 66: for i3 = 65 to 66: for i4 = 65 to 66。f[i1,i2,i3,i4] max f[i1-1,i2,i3,i4],f[i1,i2-1,i3,i4],f[i1,i2,i3-1,i4],f[i1,i2,i3,i4-1] +score[1+i1+i2*2+i3*3+i4*4]ps:这题用120*40*40*40,350*40*40*40的算法都是可以的。在高频电流一个电流周期里,t2~t3的i2是线盘磁能对电容c3的充电电流,t3~t4的i3是逆程脉冲峰压通过l1放电的电流,t4~t5的i4是l1两端电动势反向时, 因d11的存在令c3不能继续反向充电, 而经过c2、d11回流所形成的阻尼电流,q1的导通电流实际上是i1。
printf("%d,%ld\n",i,i2);//试验不出%ld和%d之间的差别,因为long是4bytes
printf("%hd,%hd\n\n\n",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes
//for string and char
char ch1='d';
unsigned char ch2=160;
char *str="Hello everyone!";
printf("%c,%u,%s\n\n\n",ch1,ch2,str);//unsigned char超过128的没有字符对应
//for float and double,unsigned and signed can not be used with double and float
float fl=2.566545445F;//or 2.566545445f
double dl=265.5651445;
long double dl2=2.5654441454;
//%g没有e格式,默认6位包括小数点前面的数,
//%f没有e格式,默认6位仅只小数点后面包含6位
//%e采用e格式,默认6位为转化后的小数点后面的6位
printf("%f,%e,%g,%.7f\n",fl,dl,dl,dl);
printf("%f,%E,%G,%f\n",fl,dl,dl,dl);//%F is wrong
printf("%.8f,%.10e\n",fl,dl);
printf("%.8e,%.10f\n\n\n",fl,dl);
//for point
int *iP=&i;
char *iP1=new char;
void *iP2;//dangerous!
printf("%p,%p,%p\n\n\n",iP,iP1,iP2);
//其他知识:负号,表示左对齐(默认是右对齐);%6.3,6表示宽度,3表示精度
char *s="Hello world!";
printf(":%s: \n:s: \n:%.10s: \n:%-10s: \n:%.15s: \n:%-15s: \n:.10s: \n:%-15.10s:\n\n\n",
s,s,s,s,s,s,s,s); double ddd=563.908556444;
printf(":%g: \n:g: \n:%.10g: \n:%-10g: \n:%.15g: \n:%-15g: \n:.10g: \n:%-15.10g:\n\n\n",
ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);
//还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定 printf("%.*s \n", 8, "abcdefgggggg");
printf("%*.*f \n", 3,3, 1.25456f); return 0;
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-107342-1.html