㈠ 編譯錯誤是什麼意思
編譯錯誤一般指語法上的錯誤運行錯誤或指程序上的bug。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯(compilation , compile) ,利用編譯程序從源語言編寫的源程序產生目標程序的過程。用編譯程序產生目標程序的動作。 編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。
㈡ c++中什麼是語法錯誤,什麼是編譯錯誤
程序的錯誤主要分成三種:
編譯鏈接錯誤;
編譯鏈接錯誤又分成編譯錯和鏈接錯。
編譯錯就是普通意義上的語法錯,編譯器進行語法檢查不通過,也就是程序違背了計算機語言的語法,例如:括弧不匹配、變數名拼寫錯誤、用保留字定義變數名等;
鏈接錯是指程序通過了語法檢查,但是無法生成可執行文件,最常見的是鏈接找不到lib庫。初學者有時寫了函數的聲明,但是缺少函數的定義,此時就會出現鏈接錯。
運行錯誤;
運行錯是程序可以執行,但是在執行過程中發生異常,提前退出程序。最常見的是指針越界,打開文件失敗繼續讀取文件,總而言之是讓計算機執行一些不能執行的語句。
邏輯錯誤
邏輯錯是程序也能運行,就是結果不對,主要原因有:程序演算法本身錯誤,程序和演算法不同義等。
例如:新手經常將判斷相等的==寫成=賦值,往往就會導致邏輯錯。
你的BD(int,int); 是一句函數調用?還是一句函數聲明?
㈢ ,編譯時會出現編譯錯誤的是A) char a=』a』; B)char a=』\n』; C) char a=』aa』; D)char a=』\x2d』;
答案:C
簡要分析:
char a='aa'; a是字元變數,只能存儲一個字元!
具體分析:
A中a等於字元a
B中\為轉義字元,\n表示換行符,所以a等於換行符
C中''中只能包含一個字元來表示該字元常量。你可以這樣寫char *a="aa";表示a指向字元串常量的首地址。
D中x表示十六進制數,16進制的2d轉換為十進制為45,即為字元『-』
'\x2d'就是'\-',所以a=『-』
所以c選項錯誤
㈣ compile error是什麼錯誤
compile error 是C語言編輯錯誤。
1、變數未定義就使用,或定義後使用位置超出了定義的作用域。
說明:如b=25但程序並未在使用前定義好b的類型,還應注意變數作用域。
2、 括弧不匹配。
說明:()、[]、{}一定要有始就得有終。
3、使用非法類型。
說明:如__int64在GCC編譯器下不識別,你卻用它。
4、需少分號。
說明:忘了語句以一個分號結束。
5、用函數未引頭文件。
說明:如printf函數在G++中未包含stdio.h文件。GCC較G++稍寬鬆些此處。
6、 包含非標准頭文件。
說明:如conio.h並非標准庫中定義的頭文件。
7、使用非標准庫函數。
說明:如itoa、strupr等並不是C標准庫中的函數,不能使用。
8、有非法字元。
說明:一般是你網上或幻燈片里粘貼過來的代碼有非常字元引起。
9、自定義函數未聲明。
說明:自定義函數一定要先聲明再使用。
(4)什麼錯誤被稱為編譯錯誤擴展閱讀
程序編譯特點:
1、數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程序。符號表由源程序中所用的標識符連同它們的屬性組成,其中屬性包括種類(如變數、數組、結構、函數、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程序所需的其他信息。
2、常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。中間語言程序是將源程序翻譯為目標程序前引入的一種中間形式的程序,其表示形式的選擇取決於編譯程序以後如何使用和加工它。
3、常用的中間語言形式有波蘭表示、三元組、四元組以及間接三元組等。