#include <stdio.h> int main(void) { int month, day, hour, min; char *name; month = 7; day = 27; hour = 9; min = 45; name = "kaiching"; printf("\n\n今天是 %d 月 %d 日\n", month, day); printf("現在是上午 %d:%d\n", hour, min); printf("哈囉, %s!\n\n", name); return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:csimple.c 功能:簡單顯示訊息的例子 作者:張凱慶 時間:西元2010年7月 */
我們重新觀察這個程式,函數 main() 中每一行程式碼的結尾都帶分號,如下圖用紅色圈出的部份
因為每一行以分號結尾的程式碼都稱為陳述,函數 (function) 是 C 程式執行的單位,而陳述 (statement) 是函數裡程式碼執行的單位。
C 語言為自由格式的語言,這意思是說用 C 語言寫程式,程式碼可以自由編排,但有些地方必須照既定的方式撰寫,例如函數名稱後必須接帶有參數列的小括弧,底下函數內容必須用大括弧圍起來,以下程式大括弧放的位置不對,所以編譯時會發生錯誤
#include <stdio.h> int main(void) { int month, day, hour, min; char *name; month = 7; day = 27; hour = 9; min = 45; name = "kaiching"; } printf("\n\n今天是 %d 月 %d 日\n", month, day); printf("現在是上午 %d:%d\n", hour, min); printf("哈囉, %s!\n\n", name); return 0; /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ecsimple1.c 功能:大括弧錯誤的例子 作者:張凱慶 時間:西元2010年7月 */
陳述必須以分號作為結束,漏了分號編譯時也會發生錯誤
#include <stdio.h> int main(void) { int month, day, hour, min; char *name; month = 7; day = 27; hour = 9 min = 45; name = "kaiching"; printf("\n\n今天是 %d 月 %d 日\n", month, day); printf("現在是上午 %d:%d\n", hour, min); printf("哈囉, %s!\n\n", name); return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ecsimple2.c 功能:少了分號的例子 作者:張凱慶 時間:西元2010年7月 */
大體上前兩個例子都被稱為語法錯誤 (syntax error) ,由於原始碼中帶有讓編譯器無法解析句型的內容,所以編譯會產生錯誤,也不會產生可執行檔。
其餘只要合乎語法,程式碼可以自由編排,例如,縮排不是必要的,合乎分號作陳述的結尾,分行也不是必要的
#include <stdio.h> int main(void) {int month, day, hour, min; char *name; month = 7; day = 27; hour = 9; min = 45; name = "kaiching"; printf("\n\n今天是 %d 月 %d 日\n", month, day); printf("現在是上午 %d:%d\n", hour, min); printf("哈囉, %s!\n\n", name); return 0;} /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:ocsimple.c 功能:沒有作程式碼縮排的例子 作者:張凱慶 時間:西元2010年7月 */
然而這樣一來,便不容易閱讀程式碼,因此我們傾向提供容易閱讀,並且加上適當註解的程式作為範例。
問題與討論
- 嘗試編譯 ecsimple1.c ,你會從編譯器得到什麼訊息呢?
- 嘗試編譯 ecsimple2.c ,你會從編譯器得到什麼訊息呢?
- 除了語法錯誤外,寫程式還會出現什麼樣的錯誤呢?
- 怎麼樣的程式碼編排風格,容易閱讀也容易維護呢?
沒有留言:
張貼留言