这个问题,在你学习编程过程中可能会考虑到,有时为了字节对齐而使用转义符中\t,但是到底\t占用几个空格呢?
下面我们首先通过程序来体验下,然后在总结
#include int main()
{
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");
printf("--------------------------------\n");
return 0;
}
通过上面结果我们可以看出来,\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