Computer >> Máy Tính >  >> Lập trình >> C ++

Lỗi trong C / C ++

Trong C hoặc C ++, chúng ta phải đối mặt với các loại lỗi khác nhau. Những lỗi này có thể được phân loại thành năm loại khác nhau. Những thứ này giống như bên dưới -

  • Lỗi cú pháp
  • Lỗi thời gian chạy
  • Lỗi trình liên kết
  • Lỗi lôgic
  • Lỗi ngữ nghĩa

Hãy để chúng tôi xem từng lỗi một -

Lỗi cú pháp

Loại lỗi này xảy ra khi nó vi phạm quy tắc của kỹ thuật viết hoặc cú pháp C ++. Loại lỗi này thường được trình biên dịch chỉ ra trước khi biên dịch. Đôi khi chúng được gọi là lỗi thời gian biên dịch.

Trong ví dụ này, chúng ta sẽ thấy cách gặp lỗi cú pháp nếu chúng ta không đặt dấu chấm phẩy sau một dòng.

Ví dụ

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

Đầu ra

Error] expected ';' before '}' token

Lỗi thời gian chạy

Loại lỗi này xảy ra khi chương trình đang thực thi. Vì đây không phải là lỗi biên dịch, vì vậy quá trình biên dịch sẽ được thực hiện thành công. Chúng tôi có thể kiểm tra lỗi này nếu chúng tôi cố gắng chia một số với 0.

Ví dụ

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

Đầu ra

Program crashes during runtime.

Lỗi trình liên kết

Loại lỗi này xảy ra khi chương trình được biên dịch thành công và cố gắng liên kết tệp đối tượng khác với tệp đối tượng chính. Khi lỗi này xảy ra, tệp thực thi không được tạo, Ví dụ:một số tạo mẫu hàm sai, tệp tiêu đề không chính xác, v.v. Nếu main () được viết là Main (), điều này sẽ tạo ra lỗi liên kết.

Ví dụ

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

Đầu ra

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

Lỗi logic

Đôi khi, chúng tôi có thể không nhận được đầu ra mong muốn. Nếu cú ​​pháp và những thứ khác chính xác, thì chúng tôi cũng có thể không nhận được kết quả chính xác do một số vấn đề logic. Chúng được gọi là lỗi lôgic. Đôi khi, chúng ta đặt dấu chấm phẩy sau một vòng lặp, điều đó đúng về mặt cú pháp, nhưng sẽ tạo ra một vòng lặp trống. Trong trường hợp đó, nó sẽ hiển thị đầu ra mong muốn.

Ví dụ

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

Đầu ra

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

Lỗi ngữ nghĩa

Loại lỗi này xảy ra khi nó đúng về mặt cú pháp nhưng không có nghĩa. Điều này giống như những lỗi ngữ pháp. Nếu một số biểu thức được đưa ra ở phía bên trái của toán tử gán, điều này có thể tạo ra lỗi ngữ nghĩa.

Ví dụ

#include<stdio.h>

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

Đầu ra

Giá trị
[Error] lvalue required as left operand of assignment