編程不經歷錯誤或警告,怎能見彩虹,沒有人能隨隨便便成爲高手。
身爲程序員的我們,如果哪一天沒有了錯誤或警告的提示,一定會有一種不祥的預感,對吧,都懂的。
編程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就是如此)
好了,常見的錯誤原因和一些錯誤已經總結完畢,大家如果還有什麼更精彩的錯誤,歡迎留言或者直接發給我,我會逐個解決,並給大家建立錯題集。
對於熱愛編程的人來說,有一羣一起學習一起解答的小夥伴很重要!
小編有一個C/C++編程學習交流俱樂部,直達通道:【點擊進入】!
還有編程學習文件(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!