如何快速有效地找出程式錯誤(C語言篇)

來源:互聯網
上載者:User

標籤:

       我想大多數剛開始學習C語言的人都和我以前一樣,自己好不容易敲出的程式碼在調試運行時卻出錯了,而自己卻不知道錯誤出在哪兒,怎麼去修改。多數人的第一反應就是摸不著頭腦了,然後索性根據自己的邏輯去修改代碼,結果反而越改越錯。以下是我總結的一些尋找錯誤的方法。

首先尋找代碼是否存在邏輯錯誤:

      1.變數使用前未被數值

       執行個體:

       int main()

  {

    int x=5,y,z;

    z=x*y;

    printf("%d",z);

    return 0;

  }

      在此程式中變數y在使用之前未被賦值,所以結果輸出z的值就會是系統隨機分配一個值給y再加乘以x的值。

      2.把賦值賦值符號“=”與等於符號“==”相混淆

  執行個體:

    有一下語句:

      if(a=5)

      {

    printf("a等於5");

  }

  這樣一來輸出的結果永遠都是“a等於5”,原因是在執行if(a=5)之時,無論a之前是什麼值,此時都會被重新賦值為5,而不是把a的值與5相比較,而正確的表示比較的表示為:

    if(a==5)

      {

    printf("a等於5");

  }

  3.switch語句中缺少break,do{}while()語句中while()之後缺少“;”等等。

其次首先尋找代碼是否存在演算法錯誤:

     以交換兩個變數的值得演算法為例:

  正確的演算法如下:

  int main()

  {

    int a=5,b=10,temp;

    temp=a;

    a=b;

    b=temp;

    printf("%d %d",a,b);

    return 0;

  }

  如果將temp=a;a=b;b=temp;的順序隨意調換就不會實現將a和b的值交換。

最後也是最容易犯的低級錯誤:

比如一條語句結束後忘了打";",輸入語句“scanf("%d",a)”中賦值參數a之前忘了地址符“&”等等。

       我想按照以上的步驟來尋找代碼的錯誤會變得快速有效,不妨試試哦!

      

如何快速有效地找出程式錯誤(C語言篇)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.