C 教材:排版格式

f2c-while.c 裡面的 while 語句, 我們好像在寫一首詩一樣地細心排版:

    while(fahr <= 100) {
	printf("%3.0f\t%4.1f\n", fahr, 5*(fahr-32)/9);
	fahr = fahr + 5;
    }
其實,就像一首詩似的,如果沒有照這樣排版,詩的意思也不會改變。 不像是圖畫或視覺藝術,非要按照某種方式呈現不可。 既然怎麼排都可以,何以詩人和程式設計師,要堅持某種格式呢? 對詩人而言,可能是「風格」和提高閱讀的樂趣吧? 對程式設計師而言,除了「風格」(style) 以外---我認為風格很重要---還有實際的原因: 提高閱讀的清晰度。其實我們也可以這樣寫
while(fahr<=100){printf("%3.0f\t%4.1f\n",fahr,5*(fahr-32)/9);fahr=fahr+5;}
所得的程式完全不變。但是顯然地,可讀性大大地降低了。

習慣上,我們將 C 原始碼中的所有指令, 全部做某種層次 (level) 的退格 (indentation)。 所謂退格,就是退到某一格開始寫起,前面留空白 (空格或 tab 都可以)。 所謂層次,就是退後的格數。通常以 4 的倍數退格, 所以第 0 層退 0 格,第 1 層退 4 格,第 2 層退 8 格,依此類推。 而習慣上,若沒有 STATEMENTS_,就寫成

while (CONDITION) ;
否則,所有 STATEMENTS_ 從下一列寫起, 而且退格的層次,比 while 自己的層次更深一層。 如果 STATEMENTS_ 超過一個,{ } 只要寫在所有 STATEMENTS_ 的前後即可,未必要符合什麼特殊規定。 但是,在我們的範例中, 都將 { 寫在 while 的同一列, 而它對應的 } 則獨立一列,而且與 while 有同樣層次的退格。

我們建議讀者,最好從一開始學習寫程式,就養成退格的習慣。 這個小動作,在將來真的可能帶來意想不到的便利。

最後,要附帶提醒一下,退格的排版設計只是為了人類閱讀的方便, C 是不在乎的。不要以為退格了,C 就會瞭解。例如您如果說

    while(fahr <= 100)
        printf("%3.0f\t%4.1f\n", fahr, 5*(fahr-32)/9);
        fahr = fahr + 5;
(沒有寫一對 { }) 則 C 會認為 while 後面只有一個指令, 因此 fahr = fahr + 5; 成了 while 迴圈結束後的下一個指令。 這個迴圈永遠不會結束 (因為 fahr = 30;), 您會看到終端機上輸出無窮多列的同樣數字。

習題

[BCC16-C]
單維彰 (2000/03/24) ---
[Prev] [Next] [Up]