編譯運行錯誤
⑴ C#中什麼是編譯錯誤,什麼是運行錯誤,它們的區別是什麼
編譯錯誤是在運行之前報出的 運行錯誤就是字面意思 在運行中發生的異常你可以把編譯錯誤想像成 明明是要考試2+2 可你卻寫成了1+1 當老師在檢查你演算法對不對之前他就知道你錯了 因為 明明是2+2 就像樓上說的 一般是語法之類的錯誤 運行錯誤 就是你沒有語法之類的錯誤 可是在運行時 演算法或者某些東西使用不當出現的錯誤比如空指針異常 溢出異常 等等 要用具體的來說明的話比如 一個數組長度只有3位 可是你卻在使用過程中賦了4位以上的值 或者當你用了一個對象可是在卻一直沒有給對象引用類型等等 就好像 要考試2+2 你是寫的2+2沒錯 但是 你卻是寫的等於5 老師就發現你的結果存在錯誤 而不是一開始就寫錯了
⑵ 編譯錯誤和運行錯誤,有什麼區別
編譯錯誤簡單的說就是一些語法,在運行前可以檢測到,錯誤比如const (int *)ptr;
運行錯誤比如說輸出一個未指向任何物的指針,就是在運行才能檢測;
⑶ 編譯錯誤,怎麼回事
關於編譯問題,如果說是編譯錯誤發生在自己編寫源程序的過程中的話,那麼問題的原因還是比較復雜的。通常關於用戶編寫的源程序的編譯出錯問題,這是一個很復雜的問題。因為編譯錯誤有很多種。例如:語法錯誤、系統庫連接錯誤、語義錯誤、數組越界、或者內存越界等等。
通常語法錯誤是最好解決的,因為源程序的語法出錯了,連編譯這一關都通不過,並且會告訴你在哪一行出錯了,這時候是最容易調試程序的。最難調試的就是:源程序雖然編譯通過了,但是程序的運行結果卻是錯誤的,這種是最難調試的。所以說,你必須要把詳細的出錯信息寫出來,別人們才好幫助你進行分析。
⑷ c語言,編譯鏈接和運行的錯誤分別是由什麼雲因導致的
A。鏈接錯誤,通常是忘記引入頭文件或庫文件導致。而不是說頭文件或庫文件中的代碼有問題。通常情況下頭文件和庫文件是穩定且正確的。如C語言的stdio.h等。
B 編譯錯誤,可能是代碼書寫錯誤,如忘記括弧的一部分
C 運行結果錯誤,運行結果受代碼控制,只有代碼邏輯有問題才會導致運行結果不是期望的結果
D 以上三種錯誤通常是用戶寫的代碼有問題,需要修正。
結論:A選項描述是錯誤的。
⑸ 為什麼編譯沒有錯誤,運行卻有錯誤
編譯沒有錯誤是因為你的程序語法沒有錯誤.
而運行時則有可能出現邏輯錯誤.
比如說C#里最常見的"未將對象引用設置到對象的實例",就是說一個對象並沒有實力化,或者沒有值就去引用了.
再比如連接資料庫,語法正確,但是運行時卻因為SQL未啟動或者連接字元串拼寫錯誤而發生異常.
⑹ 能解釋下編譯失敗的原因嗎
編譯失敗的原因有很多種。其中主要有以下一些類型:
(1)、用戶編寫的源程序中有語法錯誤。例如:未定義某一個變數就進行引用。這一類錯誤是最簡單的,也是編譯器最容易檢查出來的,所以會產生對源程序的編譯失敗;
(2)、用戶編寫的源程序中有未對變數進行初始化就進行引用,也會導致程序運行錯誤。例如:用戶雖然定義了一個指向某一個內存地址的指針變數,但是在使用前卻未對它進行初始化,並進行任何判斷,就往該指針指向的內存地址賦予了一個數值,這種情況在語法上編譯器是檢查不出來的,但是程序一旦運行起來,肯定就會出現錯誤了。在 WINDOWS 系統下一般是:指向XXXX的內存不能夠為 Read (或者為 Write),要是在 UNIX/Linux 系統下就會發生 Core Dumped。
(3)、數組越界。這類錯誤也是編譯器檢查不出來的,但是一旦程序運行起來,程序的運行結果可能就是一個隨機的結果。而不是用戶需要得到的結果。
所以從編譯的實質上說,以上情況都應該屬於編譯失敗的類型。因為編譯器並無法阻止這些錯誤的發生,而是讓程序在運行時發生了各種各樣的意想不到的運行結果。
⑺ C#中什麼是編譯錯誤,什麼是運行錯誤,它們的區別是什麼
在編譯成中間語言的時候就沒通過,也就是語法有錯誤,簡單的說,
就是"你說的話,人家完全聽不懂,沒法幫你編譯"所以是編譯錯誤,
這個是原則性的錯誤.
而編譯通過了,但是運行時錯誤,說明編程人員對代碼的思想有錯誤,
簡單的說就是"你說的話,人家聽得懂,但是不明白你什麼意識",語無倫次的
讓對方不知道你想做什麼,就運行時錯誤了.
⑻ 編譯正確,但運行是錯誤的
估計你是package了
package之後可以編譯,但是編譯後的class文件在包下,不再當前路徑下。
所以你用cmd運行的時候要在前面加包名