當前位置: 首頁>>技術教程>>正文


編譯時錯誤和運行時錯誤之間的區別,2個例子弄懂!

編譯時(Compile-Time)錯誤:當發生的錯誤是違反語言規則語法的編寫,稱為Compile-Time錯誤。此編譯器錯誤表明在編譯代碼之前必須先修複一些問題。所有這些錯誤都由編譯器檢測到,因此被稱為compile-time錯誤。
最常見的Compile-Time錯誤是:

  • 缺少括號(})
  • 在不聲明變量的情況下打印變量的值
  • 缺少分號(終止符)

以下是演示Compile-Time錯誤的示例:

// C program to illustrate 
// syntax error 
  
#include 
  
void main() 
{ 
    int x = 10; 
    int y = 15;  
      
// semicolon missed 
    printf("%d", (x, y))  
} 

錯誤:

error: expected ';' before '}' token

運行時(Run-Time)錯誤:成功編譯後在程序執行期間發生的錯誤(run-time)被稱為run-time錯誤。最常見的run-time錯誤之一是被零除,即除法錯誤。這些類型的錯誤很難找到,因為編譯器沒有指向發生錯誤的行。

為了更好地理解,請運行以下示例。

// C program to illustrate 
// run-time error 
  
#include 
  
void main() 
{ 
    int n = 9, div = 0; 
    
    // wrong logic 
    // number is divided by 0, 
    // so this program abnormally terminates 
    div = n/0; 
      
    printf("resut = %d", div); 
} 

錯誤:

warning: division by zero [-Wdiv-by-zero]
     div = n/0;

在給定的示例中,存在除以零的誤差。這是run-time錯誤的示例,即在運行程序時發生錯誤。

編譯時(Compile-Time)和運行時(Run-Time)錯誤之間的差異是:

Compile-Time錯誤 Runtime-Errors
這些是編譯器檢測到的語法錯誤。 這些是編譯器未檢測到並產生錯誤結果的錯誤。
它們在檢測到某些語法錯誤時阻止代碼運行。 它們阻止代碼執行完成,即執行非正常中止。
它包括語法錯誤,例如缺少分號(;),關鍵字和標識符的拚寫錯誤等。 它包含錯誤,例如將數字除以零,尋找負數的平方根等。

圖解
如果打個比方的話:編譯時錯誤如左圖所示,運行時錯誤如右圖所示!:)

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4196.html,未經允許,請勿轉載。