C/C++ 中的錯誤


在 C 或 C++ 中,我們會遇到各種各樣的錯誤。這些錯誤可以分為五種不同的型別,如下所示:

  • 語法錯誤
  • 執行時錯誤
  • 連結錯誤
  • 邏輯錯誤
  • 語義錯誤

讓我們一一來看這些錯誤:

語法錯誤

這種錯誤發生在違反 C++ 編寫技巧或語法的規則時。編譯器通常會在編譯前指出這類錯誤。有時這些錯誤被稱為編譯時錯誤。

在這個例子中,我們將看到如果在一行程式碼後面不加分號會如何產生語法錯誤。

示例

#include<stdio.h>
main() {
   printf("Hello World")
}

輸出

Error] expected ';' before '}' token

執行時錯誤

這種錯誤發生在程式執行期間。由於這不是編譯錯誤,因此編譯將成功完成。如果嘗試將一個數字除以 0,我們可以檢查此錯誤。

示例

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

輸出

Program crashes during runtime.

連結錯誤

這種錯誤發生在程式成功編譯並嘗試將不同的目標檔案與主目標檔案連結時。發生此錯誤時,不會生成可執行檔案。例如,一些錯誤的函式原型、不正確的標頭檔案等。如果 main() 寫成 Main(),這將產生連結錯誤。

示例

#include<stdio.h>
main() {
   int x = 52;
   int y = 0;
   printf("Div : %f", x/y);
}

輸出

C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.cundefined reference to `WinMain'

邏輯錯誤

有時,我們可能無法獲得預期的輸出。即使語法和其他方面正確,由於某些邏輯問題,我們也可能無法獲得正確的輸出。這些被稱為邏輯錯誤。有時,我們在迴圈後新增分號,這在語法上是正確的,但會建立一個空迴圈。在這種情況下,它將顯示預期的輸出。

示例

#include<stdio.h>
main() {
   int i;
   for(i = 0; i<5; i++); {
      printf("Hello World");
   }
}

輸出

Here we want the line will be printed five times. But only one time it will be printed for the block of code.

語義錯誤

這種錯誤發生在語法正確但沒有意義的情況下。這就像語法錯誤。如果在賦值運算子的左側給出一些表示式,這可能會產生語義錯誤。

示例

#include<stdio.h>

main() {
   int x, y, z;
   x = 10;
   y = 20;
   x + y = z;
}

輸出

[Error] lvalue required as left operand of assignment

更新於:2021年12月3日

12K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告