printf()函数中t,⽔平制表符,空格的个数
在控制台输出数据的时候,也就是⽤printf()的时候,我们经常⽤\t来控制对齐,以使输出的结果更加整齐美观。
然⽽有时候我们发现及时使⽤了\t 也会出现数据对不齐的情况,这就跟\t究竟对应⼏个空格有关系。
先给出程序和运⾏结果,再进⾏解释。
代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv)
printf函数是如何实现的{
printf("123456\t123\t45\n");
printf("12\t123456\t78\n");
printf("---------------------------------------\n");
printf("1234567\t123\t45\n");
printf("12\t123456\t78\n");
printf("---------------------------------------\n");
printf("12345678\t123\t45\n");
printf("12\t123456\t78\n");
printf("---------------------------------------\n");
printf("123456789\t123\t45\n");
printf("12\t123456\t78\n");
printf("---------------------------------------\n");
printf("123456781234\t123\t45\n");
printf("12\t123456\t78\n");
return0;
}
运⾏结果:
可以看到,出现了数据不能对其的情况。我们发现\t对应的空格的次数是不固定的,并不是我们所认为的4个空格或8个空格。
那么有什么规律呢。给个简单的公式  :
令  num = |n-8|%8,其中n表⽰\t前⾯的字符占的位置(前⾯的字符也可能是转换说明,如%d,%10d等)。
那么\t对应的空格的个数 spaceNum,有
所以我们看到当\t前⾯为123456时,后⾯有两个空格;当\t前⾯为1234567时,后⾯有1个空格,⽽当前⾯正好为12345678时,后⾯跟8个空格
当前⾯为123456781234时,后⾯的空格数量为  |12-8|%8=4