这个问题,在你学习编程过程中可能会考虑到,有时为了字节对齐而使用转义符中\t,但是到底\t占用几个空格呢?
下面我们首先通过程序来体验下,然后在总结
#include <stdio.h>
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。