C 教材:C 的字、語句和指令

從現在開始,我們就用 C 來當做「C 編譯器」之簡稱。

在我們介紹 C 的語句之前,先要定義,對 C 而言,什麼是一個 (word)?

其實,讀者應該會同意,前述的規則非常符合一般人的常識,因此不需要強記。 舉例來說,以下的語句中
cels = 5.*(fahr-32)/9
共有兩個字:celsfahr,三個常數: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 的語法,比起英文文法要簡單而且明確多了。 我們先舉出幾個基本語法。

一個以分號 ; 結束的語句,稱為指令 (statement)。 順便提醒讀者,在檔頭部分,一列就是一個指令,不以分號 ; 結束。

最後要提醒的是,語句和指令都是合於 C 的語法而已, 並不代表它們具有正確的意義。 就好像一句合於文法的英文句子,卻不見得有意義。 要它有「正確的意義」,當然是寫程式的人 (progammer) 的責任。

習題

  1. 按照前面所說的,您認為 include 算不算 C 的保留字? 說明您的理由。
  2. 在以下指令中,指出個別的字、常數和字串。
    printf("%6d\t%6d\n", fahr, 5.*(fahr-32)/9);
    printf("%6d\t%d\n", i, ipow(2,i));
[BCC16-C]
單維彰 (2000/03/23) ---
[Prev] [Next] [Up]