在寫程式的過程中,除錯扮演了一個非常重要的角色。發現程式中的錯誤並加以改正的過程稱為除錯(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;
}
prog2
犯了幾個語法上的錯誤,經由編譯器編譯,就能將這些錯誤給抓出來。
第六行,main()
的本體應以左大括號開始及右大括號結束。所有括號的出現都是成雙成對的。
第九行,敘述結束時沒有以分號作為結尾。
第十行,printf()
函數內少了一個雙引號。
上面的程式經過除錯之後,執行的結果如下:
I have 5 dogs.
You have 5 dogs, too.
語意錯誤(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;
}
執行結果如下:
I have -5 dogs.
#C語言 #除錯 #Debug
Paul
這裡有可以提供資源的管道嗎? 覺得有這樣的網站很不錯也想貢獻一點~
mt
哈囉!如果有想要貢獻的資源歡迎寄信至mt@eecsmt.com與我們聯繫唷~感謝!