在控制台輸出數據的時候,也就是用printf()的時候,我們經常用\t來控制對齊,以使輸出的結果更加整齊美觀。
然而有時候我們發現及時使用了\t 也會出現數據對不齊的情況,這就跟\t究竟對應幾個空格有關系。
先給出程序和運行結果,再進行解釋。
代碼:
#include <stdio.h> #include <stdlib.h> int main(int argc,char* argv) { 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"); 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
