![]() |
C 教材:C 的字、語句和指令 |
從現在開始,我們就用 C 來當做「C 編譯器」之簡稱。
在我們介紹 C 的語句之前,先要定義,對 C 而言,什麼是一個字 (word)?
ab34 _ab34 ab_34是三個字,而
34ab 34_ab都不是字。
1234 12.34都是常數。
cels = 5.*(fahr-32)/9共有兩個字:cels、fahr,三個常數:5.0、32、9。
C 未必認識寫在原始碼裡面的字。 寫程式的人,必須設法讓 C 「認識」這些字。 這就是我們將來要學習的項目之一。 至少,值得慶幸的是,C 認識常數。 除了常數之外,C 還認識一些符號和字。
到目前為止,我們只看過少數幾個符號,還沒有見過大部分的符號,也不知道它們的意義和語法規則。 將來它們會逐一出現。
C 認識的符號 , . ; = + - * / % & ^ > < | ? : ! ( ) [ ] { } " ' \ C 認識的字 main int (還有一些沒列在這裡)
所謂「C 認識的字」,又稱為 C 的保留字 (reserved words)。 目前我們只看到了 main 這一個字而已。 稍後會看到 int,還有一些沒列在這裡的保留字。 用 C 寫程式原始碼的人,可以定義自己的字,但是要注意
使用者自己定義的字,不應與保留字相同
將字、常數、和 C 認識的符號,按照 C 的語法 (syntax) 組合, 就成了一個語句 (expression)。例如
5*(fahr-32)/9是一個語句。但是
5_(fahr.32)/9就不是一個語句,因為 5_ 不是一個字,雖然 fahr 是一個字、32 是個常數, 但是 fahr.32 卻是一個非法的組合。
要判定是否為一個語句,必須要瞭解 C 的語法。 而大部分的語法,在於符號的使用規則。 這當然不是一蹴可躋的,我們將要在以後的講義中,逐步學習。 讀者至少可以放心的是,C 的語法,比起英文文法要簡單而且明確多了。 我們先舉出幾個基本語法。
5*{fahr-32)/9都不合語法。
printf("hello, world\n"
printf("hello, world\n")這個語句中,只有一個字:printf,而 hello, world\n 是一個常數字串。
一個以分號 ; 結束的語句,稱為指令 (statement)。 順便提醒讀者,在檔頭部分,一列就是一個指令,不以分號 ; 結束。
最後要提醒的是,語句和指令都是合於 C 的語法而已, 並不代表它們具有正確的意義。 就好像一句合於文法的英文句子,卻不見得有意義。 要它有「正確的意義」,當然是寫程式的人 (progammer) 的責任。
習題
printf("%6d\t%6d\n", fahr, 5.*(fahr-32)/9);
printf("%6d\t%d\n", i, ipow(2,i));
![]() |
![]() |
單維彰 (2000/03/23) --- |