长度修饰符l用于格式符d、i、o、u、x,表示对应的输出项是长整型或无符号长整型。
以下是格式输出的一些例子。例如,
int i=1234; long j=1234567l;
printf(”%d,%+6d,%06d,%-6d, %5ld”,i,i,i,i,j)
将输出:
1234, 1234,00l234,1234,1234567
注意:对于long型数据输出,必须在格式符之前有长度修饰符l,表明输出long型数据。
若 int k=045;long p=-1l;printf(”%#o,%4o,%6lo”,k,k,p)
将输出:
045, 45, 37777777777
而printf("%#x,%4x,%6lx”,k,k,p)将输出:
0x25, 25, ffffffff
若 unsigned int u= 65535u;prinif(”%d,%4u,%ln’,u,u,p)
将输出:
-l, 65535, 4294967295
若 char ch1= 045, ch2=’a’;printf(”%c,%-3c,%2c”,ch1,ch2,ch2)
将输出:
%,a, a
若 char s[]==”abcdef’;printf(”%3s,%4.2s,%-7.4s,%.5s”,s,s,s,s)
将输出:
abcdef, ab, abcd, abcde
若 float f=123.4567f; double d=123.456789;
printf(”%.4f,%8.3f,%-7.2f,%.7f",f,f,f,d)
将输出:
123.4567, 123.457, 123.46, 123.4567890
而 printf(”%.6e,%10.2e,%-10.2e,%.2e,%.9e”,f,f, f,f,d)
将输出:
1.23457e+02, 1.2e+02,1.2e+02,l.2e+02, 1.23456789e+02
注意:实型数据的有效位数,不要以为凡是打印(显示)的数字都是准确的。一般地,float型只有7位有效数字,double型有15位有效数字。实际上,因计算过程中的误差积累,通常不能达到所说的有效位数。
另外,要注意%g格式的特殊性,当它选择“整数部分.小数部分”形式时,因格式修饰说明.p在e格式中的意义是指明精度,所以p的值是整数部分位数与小数部分位数之和(不是f
格式中的小数位数)。如有
float g1=12.34f,g2=0.0f;
double d=123.456789, g=123456.789;
printf("%g,%g",g1,g2);
printf("%f,%g,%g,%g,%.8g"’,g1,g1,d,g,g)
将输出:
12.34,0
12.340000,12.34,123.457,123457,123456.79
