在控制檯輸出數據的時候,也就是用printf()的時候,咱們常常用\t來控制對齊,以使輸出的結果更加整齊美觀。spa
然而有時候咱們發現及時使用了\t 也會出現數據對不齊的狀況,這就跟\t究竟對應幾個空格有關係。code
先給出程序和運行結果,再進行解釋。blog
代碼:io
#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; }
運行結果:class
能夠看到,出現了數據不能對其的狀況。咱們發現\t對應的空格的次數是不固定的,並非咱們所認爲的4個空格或8個空格。bfc
那麼有什麼規律呢。給個簡單的公式 :gc
令 num = |n-8|%8, 其中n表示\t前面的字符佔的位置(前面的字符也多是轉換說明,如%d,%10d等)。程序
那麼\t對應的空格的個數 spaceNum,有im
因此咱們看到當\t前面爲123456時,後面有兩個空格;當\t前面爲1234567時,後面有1個空格,而當前面正好爲12345678時,後面跟8個空格數據
當前面爲123456781234時,後面的空格數量爲 |12-8|%8=4