我是个C语言的初学者,对于printf语句有部分不懂的地方,求高手指点。运行结果如下图,请高手帮忙解释一下这行的运行结果。
#include <stdio.h>
void main()
{
int a=5,b=7;
float x=67.8564,y=-789.124;
char c='A' ;
long n=1234567 ;
unsigned u=65535;
printf("%d%d\n",a,b);1
printf("%3d%3d\n",a,b);2
printf("%f,%f\n",x,y);3
printf("%-10f,%-10f\n",x,y);4
printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);5
printf("%e,%10.2e\n",x,y);6
printf("%c,%d,%o,%x\n",c,c,c,c);7
printf("%ld,%lo,%x\n",n,n,n);8
printf("%u,%o,%x,%d\n",u,u,u,u);9
printf("%s,%5.3s\n","COMPUTER","COMPUTER");10
}
a 第3行 那个"f"到底可以精确几位?“.”算一位不?这个和列宽有什么关系啊?如果不足8位后面是不是补0,但为什么y只有3个小数部分,但变成了789.124023?
b 第6行结果为6.78564e+01,不是要有13列么?这个怎么没有?还有在什么情况下是+001或是+01呢?第二个结果麻烦解释一下,7.9是哪里来的啊?
c 第7行的十进制数65转八进制和十六进制数是怎么算的啊?
d 第8行%lo,%lx对应的那些结果是怎么来的啊?
e 第9行unsigned是什么意思啊?能不能把每个值都解释一下。
万分感谢~