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;
}

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

2 留言

  1. Paul

    這裡有可以提供資源的管道嗎? 覺得有這樣的網站很不錯也想貢獻一點~

發佈留言