注釋是給人看的,並非讓計算機執行的。
注釋可以用漢字或英文本元表示。
注釋兩種方式:
1以//開始的單行注釋。(不能跨行,從//開始,到換行符結束)
//如注釋內容一行內寫不下
//可以在下一行重新用「//」,然後繼續寫注釋。
2以/*開始,以*/結束的塊式注釋。(可以跨行)
c89只允許用/*。。。*/形式注釋,c99正式將//注釋納入新標準。
而c++則允許用//形式的注釋,//注釋被稱為「c++風格」的注釋
程式除錯是指對程式的查錯和排錯。
除錯的任務是排除程式中的錯誤,是程式能順利地執行並得到預期地效果。
測試的任務是盡力尋找程式中可能存在的錯誤。就是找出那些不能正常執行的情況和原因。
先進行靜態檢查。即為人工檢查。
力求做到1、應當採用結構化程式方法程式設計,增加可讀性;2、盡可能多加注釋,以幫助理解每段程式的作用;3、在編寫複雜的程式時,不要將全部語句都寫在main函式中,而要多利用函式,用每乙個函式來實現乙個單獨的功能。這樣易於閱讀也便於除錯,各函式之間除用引數傳遞資料這一渠道外,資料間盡量少出現耦合關係,便於分別檢查和處理。
靜態檢查無誤,開始進行程式除錯。由編譯系統進行檢查,發現錯誤,稱動態檢查。
編譯時會給出錯誤資訊,根據資訊進行改正。
改正語法錯誤後,連線得到可執行程式,執行程式,對結果進行分析,看是否符合要求。
執行結果不對,大多屬於邏輯錯誤。
1.將程式與流程圖(或偽**)仔細對照2.如在程式中無錯誤,檢查演算法是否出錯。
有時錯誤很隱蔽,在紙面上難以查出,此時可以採用以下方法利用計算機幫助查出問題所在。
1.取「分段檢查」的方法:在程式不同位置設幾個printf語句,輸出有關變數的值,以檢查是否正常,逐段往下檢查。不斷縮小「查錯區」。2.可以用「條件編譯」指令進行程式除錯。3.有的系統還提供了debug(除錯)工具,根據流程給出相應資訊,使用更為方便,可以查閱有關首手冊。
語法錯誤:即不符合c語言的語法規定;
邏輯錯誤:即通知給系統的指令與解題的原意不相同,出現了邏輯上的錯誤;
執行錯誤
測試時要設想程式執行時的各種情況,測試在各種情況下的執行結果是否正確。
測試的關鍵是正確地準備測試資料。使程式中每一條路徑都有機會執行,觀察其執行是否正常。
測試的目的使檢查程式有無「漏洞」。
(1)忘記定義變數。
(2)輸入輸出的資料的型別與使用者指定的輸入輸出格式宣告不一致。
(3)未注意int和short資料的數值範圍。
(4)在使用輸入函式scanf時,忘記用變數的位址符&。
(5)輸入資料的形式和要求不符。
(6)在用scanf函式向字元陣列輸入資料時,在陣列名前面多加了&。
(7)在用scanf函式向數值型陣列輸入資料時,用數值型陣列名。
(8)語句後面漏分號。
(9)把預處理指令當作c語句,在行末加了分號。
(10)在不該加分號的地方加了分號。
(11)對應該有花括號的復合語句,忘記加花括號。
(12)括號不配對。
(13)在用識別符號時,混淆了大寫字母和小寫字母的區別。
(14)誤把「=」作為「等於」運算子。
(15)引用陣列元素時誤用了圓括號。
(16)在定義陣列時,將定義的「元素個數」誤認為是「可使用的最大下標值」。
(17)對二維或多維陣列的定義和引用的方法不對。
(18)誤以為陣列名代表陣列中全部元素。
(19)混淆字元陣列與字元指標的區別。
(20)在引用指標變數之前沒有對它賦予確定的值。
(21)switch語句的各分支中漏寫break語句。
(22)混淆字元和字串的表示形式。
(23)使用自加(++)和自減(--)運算子時容易出的錯誤。
(24)忘記對所呼叫的函式進行函式原型宣告。
(25)對函式宣告與函式定義不匹配。
(26)在需要加標頭檔案時沒有用#include指令去包含標頭檔案。
(27)誤認為函式形參值的改變會影響實參的值。
(28)函式的實參和形參型別不一致。
(29)不同型別的指標混用。
(30)沒有注意系統對函式引數的求值順序的處理方法。
(31)混淆陣列名與指標變數的區別。
(32)混淆結構體型別與結構體變數的區別,對乙個結構體型別賦值。
(33)使用檔案時忘記開啟,或開啟方式與使用方式不匹配。
(34)在開啟檔案時,指定的檔名找不到。
(35)忘記關閉檔案,雖然系統會自動關閉所用檔案,但可能會丟失資料。因此必須在用完檔案後關閉它。
C語言基礎知識整理
一 關於sizeof和strlen。sizeof 用於計算某型別或者某變數在記憶體中所佔空間。比如整數分為short型,int型,long整型,分別佔2,2 4,4個位元組,int型具體占用幾個位元組和編譯系統有關。我們輸入字串時通常用char陣列 char s 10 scanf s s 輸入的字串...
c語言基礎知識整理
1 sizeof表示獲取乙個變數或一種資料型別佔幾個位元組 2 d表十進位制有符號整數 3 表示賦值,不表示相等 表示相等 4 變數 char字元型別變數short短整型 int整型long長整型 long long長長整型 float單精度浮點數 4個位元組 double雙精度浮點數 8個位元組 ...
C語言基礎知識整理 四
進行巨集字串連線,在巨集中把引數解釋為字串,不可以在語句中直接使用。在巨集定義中,printf s n s 會被解釋為printf s n s include include define trace s printf s n s s int main 輸出為a strhello 在第三次列印中,巨...