C語言

[C語言]除錯

在寫程式的過程中,除錯扮演了一個非常重要的角色。發現程式中的錯誤並加以改正的過程稱為除錯(debug)

程式中的錯誤通常可以分為語法錯誤(syntax error)以及語意錯誤(semantic error)這兩種,下面的兩個小節將分別討論這兩種錯誤。

語法錯誤(Syntax error)

顧名思義,語法錯誤就是我們所撰寫的程式碼中有不符合C語言語法的規定。你可以先嘗試閱讀下面的程式,看是否能找出其中的錯誤:

/* prog2, debug */ #include <stdio.h> #include <stdlib.h> int main(void) ( int num; num = 5; printf("I have %d dogs.\n", num) printf("You have %d dogs, too.\n, num); system("pause"); return 0; }
Code language: C++ (cpp)

prog2犯了幾個語法上的錯誤,經由編譯器編譯,就能將這些錯誤給抓出來。

第六行,main()的本體應以左大括號開始及右大括號結束。所有括號的出現都是成雙成對的。

第九行,敘述結束時沒有以分號作為結尾。

第十行,printf()函數內少了一個雙引號。

上面的程式經過除錯之後,執行的結果如下:

I have 5 dogs. You have 5 dogs, too.
Code language: plaintext (plaintext)

語意錯誤(Semantic error)

當程式本身的語法沒有錯誤,但是執行的結果不符合我們的預期,此時可能就是犯了語意上的錯誤,也就是程式有邏輯上的錯誤。

要找出語意錯誤會比找語法錯誤還要來的難,因為編譯器不會幫你找出語意錯誤,必須靠程式設計者自己檢查。

我們用一個簡單的例子來看什麼是語意錯誤:

/* prog3, debug */ #include <stdio.h> #include <stdlib.h> int main(void) { int num; num = -5; printf("I have %d dogs.\n", num); system("pause"); return 0; }
Code language: C++ (cpp)

執行結果如下:

I have -5 dogs.
Code language: C++ (cpp)

#C語言 #除錯 #Debug

發佈留言