『壹』 在C語言中,計算機程序通常有哪幾種錯誤
1、系統錯誤:這是指程序沒有語法錯誤和邏輯錯誤,但程序的正常運行依賴於某些外部條件的存在,如果這些外部條件缺失,則程序將不能運行。
2、語法錯誤:這是指程序中含有不符合語法規定的語句,例如關鍵字或符號書寫錯誤(將printf寫成print、將數組元素引用寫成a(2)等)、使用了未定義的變數、括弧不配對等。
3、邏輯錯誤:這是指程序中沒有語法錯誤,可以通過編譯、連接生成可執行程序,但程序運行的結果與預期不相符的錯誤。
C語言程序的特點
1、採用結構化的控制語句,是完全模塊化和結構化的語言。
2、數據類型豐富,具有現代語言的各種數據結構
3、語法限制不太嚴格,程序設計自由度大,同時也意味著容錯性差。
4、允許直接訪問屋裡內存,能進行位操作,能實現匯編語言的大部分功能,可直接對硬體進行操作,兼有高級和低級語言的特點。
5、目標代碼質量高,程序執行效率高(比匯編程序生成的目標代碼低10%-20%)
6、允許在編譯之前使用預處理命令,提高編程效率。
7、以內存使用為核心。
8、C語言程序是由函數構成的。一個源程序不論有多少個文件組成,包含多少個函數,都有且一個 main 函數,及主函數。一個程序總是從 main 函數開始執行,而不論 main 函數在程序什麼位置,程序的執行也結束於主函數,其他函數通過函數調用被執行。
9、函數都要有類型說明,放在函數名前,如 void 表示空類型,沒有返回值。
10、函數體內語句一般按四大功能順次排列,即首先對變數與函數做聲明 ——>變數賦初值 ——>數據計算與處理 ——>輸出結果。
『貳』 璁烘枃鍐欎綔涓鏈夊摢浜涘父瑙佺殑涓鏂囪娉曢敊璇闇瑕佹敞鎰忥紵
鍦ㄨ烘枃鍐欎綔涓錛屼腑鏂囪娉曢敊璇鏄甯歌佺殑闂棰樹箣涓銆備互涓嬫槸涓浜涘父瑙佺殑涓鏂囪娉曢敊璇闇瑕佹敞鎰忥細
1.涓昏皳涓嶄竴鑷達細涓昏鍜岃皳璇鍦ㄤ漢縐般佹暟絳夋柟闈㈠簲璇ヤ繚鎸佷竴鑷淬備緥濡傦紝鈥滀粬浠鍠滄㈣諱功鈥濇槸姝g『鐨勶紝鑰屸滀粬浠鍠滄㈣諱功鐨勨濇槸閿欒鐨勩
2.鏃舵佹販涔憋細鍦ㄦ弿榪拌繃鍘匯佺幇鍦ㄦ垨鏈鏉ョ殑浜嬫儏鏃訛紝搴旇ヤ嬌鐢ㄦg『鐨勬椂鎬併備緥濡傦紝鈥滄垜鏄ㄥぉ鍘諱簡鍥句功棣嗏濇槸姝g『鐨勶紝鑰屸滄垜鏄ㄥぉ鍘誨浘涔﹂嗕簡鈥濇槸閿欒鐨勩
3.璇嶅簭涓嶅綋錛氬湪鍙ュ瓙涓錛岃瘝璇鐨勯『搴忓簲璇ョ﹀悎奼夎鐨勮娉曡勫垯銆備緥濡傦紝鈥滀粬鍠滄㈠悆鑻規灉鈥濇槸姝g『鐨勶紝鑰屸滀粬鍚冨枩嬈㈠悆鑻規灉鈥濇槸閿欒鐨勩
4.鉶氳瘝婊ョ敤錛氳櫄璇嶅傗滅殑鈥濄佲滃湴鈥濄佲滃緱鈥濈瓑搴旇ュ湪閫傚綋鐨勫湴鏂逛嬌鐢ㄣ備緥濡傦紝鈥滀粬鐨勪功鈥濇槸姝g『鐨勶紝鑰屸滀粬鐨勪功鐨勨濇槸閿欒鐨勩
5.騫跺垪緇撴瀯涓嶆竻鏅幫細褰撲嬌鐢ㄥ苟鍒楃粨鏋勬椂錛屽簲璇ユ敞鎰忓苟鍒楁垚鍒嗕箣闂寸殑閫昏緫鍏崇郴銆備緥濡傦紝鈥滄垜鍠滄㈢湅鐢靛獎鍜屽惉闊充箰鈥濇槸姝g『鐨勶紝鑰屸滄垜鍠滄㈢湅鐢靛獎鍜屽惉闊充箰鐨勨濇槸閿欒鐨勩
6.鐪佺暐涓嶅綋錛氬湪蹇呰佺殑鎯呭喌涓嬶紝鍙浠ラ傚綋鐪佺暐涓浜涜瘝璇錛屼絾搴旇ユ敞鎰忎笉褰卞搷鍙ュ瓙鐨勫畬鏁存у拰鍑嗙『鎬с備緥濡傦紝鈥滀粬鍘諱簡鍖椾含錛堣屼笉鏄鍏朵粬鍦版柟錛夆濇槸姝g『鐨勶紝鑰屸滀粬鍘諱簡鍖椾含錛堣屼笉鏄鍏朵粬鍦版柟錛夌殑鈥濇槸閿欒鐨勩
7.鏍囩偣絎﹀彿閿欒錛氭爣鐐圭﹀彿鐨勪嬌鐢ㄥ簲璇ョ﹀悎奼夎鐨勮勮寖銆備緥濡傦紝鈥滄垜鍠滄㈠悆鑻規灉銆傗濇槸姝g『鐨勶紝鑰屸滄垜鍠滄㈠悆鑻規灉銆傗濇槸閿欒鐨勩
『叄』 C語言編譯原理是什麼
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。