回覆列表
  • 21 # 科技電小二

    對於我們經常在微控制器開發過程中,使用C語言程式設計的人來說,會經常遇到程式碼沒錯,編譯能夠透過,沒有報錯。但功能沒有達到預期的情況。

    編譯不出錯,可以肯定語法沒有問題,那麼我們分析下,有可能有一下幾種情況:

    1,變數定義不合適。比如沒有明白變數型別的範圍,

    char型別是-128~127,unsigned char 的範圍是0-255

    int 型別是-32768~32767。unsigned int的範圍 0-65525

    假如你本來預期的變數範圍是1000,必須使用unsigned int,但定義的是 unsigned char變數 型別,如果按照如下的程式碼,就沒有辦法執行條件發生後的結果。

    區域性變數和全部變數,靜態變數,使用。

    有時在函式中,需要使用static 靜態變數,表示變數運算的值不能丟失,但假如定義變數型別時,忘記新增static 關鍵字時,則每次執行函式完後,都會被清零。

    有時候,變數需要清零的狀態,沒有進行賦值。當變數處理完成後,需要清零從新開始計算,假如這個時候,忘記清除這個變數,則肯定沒辦法完成預想的程式執行邏輯。也就出不來正確的結果了。

    邊界問題

    這個問題,我一說大家就會明白了,在IF/else 語句裡面 對各個條件進行判斷的時候,選擇使用>和≥就不一樣,會觸發不同的邏輯處理。

    總結

    一般這類的問題造成的原因有很多很多,絕大部分都是程式設計時,細節沒有處理好,基礎知識掌握不夠清晰,或者對於整體邏輯程式設計思路不清晰造成的,所以遇到問題,可以藉助除錯手段,將問題定位到,再解決好問題,同時本身的思維邏輯和專業基礎細節一定要強化。

  • 22 # 星塵175560953

    應該是對程式命令、語法理解有誤,如果有同行,最好讓別人參考下,往往自己的邏輯錯誤自己看不出來。或者設定斷點,一步一步檢查結果,可能很快就能檢查出來。當然,如果程式碼不長,貼出來讓大家分析分析。

  • 23 # 教女朋友學程式設計

    其實主要有3點原因,

    第一,程式碼書寫比較粗心,有的同學對著書籍敲的,看似一樣的程式碼,實則不一樣。

    比如有一些標點符號寫錯成中文的

    第二,執行時程式出錯,可能是你程式碼中邏輯寫錯了,比如死迴圈等,記憶體非法訪問等

    第三,不會除錯,程式碼不僅要會寫,還要會除錯程式碼,在執行時進行分析,這樣才算合格!

  • 中秋節和大豐收的關聯?
  • 每天走一萬步會傷身?