printf可以用来把一些信息有序的打印出来,比如说这样打印
{
for (i = 0; i < MIPS64_CP0_REG_NR; i++) {
if (i%2 == 0) printf("\n");
printf("$%-3d: %-20s = 0x%-10x\t", i, cp0_name[i], vm->boot_cpu->cp0.reg[i]);
}
}
就是一个名字,一个值,
$0 : TLB Index = 0xa $1 : TLB Radom = 0x0
设想,%d, %s, %x都不相同,如果不加参数的打印,则会乱掉。所以需要加flag的打。
这里的一个原则是,默认的话,打印会紧接着上一个的结束的地方,继续打印。
所以我们必须确保你输出的长度不同的字符,都具有相同的长度,不然,就会乱掉。
$%-3d, 意思是左对齐,然后这个输出占三个字节的宽度。于是到了":",":"现在坚持着上一个结束的地方打印,这时这个结束的地方是三个字节。
到了%-20s, 我们希望cp0_name占二十个字节宽度,因此,不管这个name是多大,它们肯定是对齐的了。
到了最后,我们来一个\t, 表示制表,我猜想应该是8个字节吧,它会随着最后一个%-10x,因为%-10x也是对齐的,总共会占10个宽度,因此\t也是对齐的情况下进行打印。
所以一切都是对齐的。
一句话,我们必须保证每一个变长的打印都有相同的宽度和对齐。
阅读(848) | 评论(0) | 转发(0) |