程式設計不經曆錯誤或警告,怎能見彩虹,沒有人能随随便便成為高手。身為程式員的我們,如果哪一天沒有了錯誤或警告的提示,一定會有一種不祥的預感,程式設計N年來,碰到過的問題多得自己都記不清了,你也一樣,如果可以選擇,我願時光倒流,真希望都能記下來,現在就可以寫本《錯誤集》了。
在遇到錯誤的時候不要慌,首先看報錯,中文直接看,英文翻譯看。根據報錯找到錯誤發生的行數,一般錯誤就在這一行的上下幾行代碼。不要偷懶遇到問題馬上問别人是對自己的不負責,成長是需要經曆困難的,隻有自己被折磨過才能記住它。
根據報錯解決不了先在網上搜尋尋找答案,自己把代碼過一遍基本上能找到問題,實在不行可以找群裡的大佬問,值得注意的是問問題要講究方法:首先描述你程式的功能,然後描述錯誤原因,出現位置以及你的看法,最後感謝大佬
C語言常見錯誤有三種: Ⅰ 文法錯誤 概念:是指程式中含有不符合文法規定的語句
出現原因:1,C語言基礎文法部分不過關
2,寫代碼時不細心,隻想趕緊搞完
3,對某些知識點沒有了解透徹,不知道怎麼使用
常見錯誤:1,引号、逗号、分号錯誤(中文英文逗号、引号等是不同的,注意切換輸入法)
2,變量未定義(這個不用多說...)
3,變量指派、運算時顯示類型不比對(如:int a=2;float b=2.021;當使a=b時,會顯示類型不相容,會導緻資料丢失。)
4,循環條件判斷後面是跟着{大括号},不要加上分号,否則循環不完整起不到作用,如:while(1);{printf("C語言Plus");}這段代碼我們想要的是循環列印“C語言Plus”這段文字,但是實際上螢幕上什麼都不會列印
5,函數參數不比對(了解函數的作用,需要傳什麼參數,對照形參傳實參)
6,頭檔案未包含(有時候你在别處看見一個好玩的函數,你自己拿來用,發現此函數竟然未定義,oh~糟糕!你要知道此函數在哪個頭檔案裡面,或者是否是自己定義的)。
7,宏定義不是C語言語句,後面一定不能加分号,否則會導緻宏定義不能使用(#include SIZE 100; 這樣就是錯誤的,a=SIZE+1;這裡就運作不了,編譯器也崩潰了,亂報錯,啥都有,你要是不注意根本找不到問題!)
Ⅱ 邏輯錯誤 概念:是指程式中沒有文法錯誤,可以通過編譯、連接配接生成可執行程式, 但程式運作的結果與預期不相符的錯誤。
出現原因:1、和文法錯誤一樣,不細心,不該出現的錯誤
2、對于記憶體不夠了解,指針運用不
常見錯誤:1、進行if判斷時使用了指派運算符=,而不是邏輯運算符==(if(a=b)和if(a==b)是完全不同的,相信大家都遇到過)。
2、這個是最讓人頭疼的錯誤,運作一下代碼,好,沒問題!随着你的輸入等操作,砰~彈出一個視窗,大緻意思是通路沖突,然後看着代碼發呆。咋回事啊,為什麼啊,咋解決啊!???
這個問題錯誤也有好多:
1)數組越界通路或者越界存資料
2)用scanf輸入時沒有取位址(&a)
3)指針指向了沒有權限通路的記憶體(注意野指針)
4)一定要細心、細心、細心
Ⅲ 系統錯誤 概念:是指程式沒有文法錯誤和邏輯錯誤,但程式的正常運作依賴于某 些外部條件的存在,如果這些外部條件缺失,則程式将不能運作。
出現原因:1,外部依賴項路徑不正确
2,外部依賴項不存在
常見錯誤:1,使用圖形程式設計時輸出圖檔,路徑錯誤
2,使用某些函數時找不到此函數(比如說easyx圖形庫,你包含了頭檔案,輸出也寫好了,總之代碼沒錯,在别人那裡也能運作!這裡要注意,不是所有函數C語言都自帶的,有的需要安裝,easyx就是如此)
好了,常見的錯誤原因和一些錯誤已經總結完畢