[Tự Học Lập Trình C/C++] Các Lỗi Thường Gặp Trong Lập Trình

Trang chủChuyen nganh [Tự học lập trình C/C++] Các lỗi thường gặp trong lập trình tháng 5 17, 2016 Nguyên tắc sửa lỗi (lỗi / cảnh báo – error / warning (có thể bỏ qua mà không cần sửa, tuy nhiên một số warning nếu không được sửa sẽ làm cho chương trình (CT) chạy không đúng · Kích đôi chuột vào thông báo lỗi để nhảy đến vị trí có lỗi trong chương trình (CT).

Mục lục seri các bài viết hướng dẫn tự học lập trình C/C++:

  1. Giới thiệu ngôn ngữ lập tình C
  2. Các khái niệm cơ bản trong C
  3. Cấu trúc chương trình C
  4. Hằng - Biến -Toán tử - Biểu thức
  5. Nhập xuất dữ liệu trong ngôn ngữ C/C++
· Đọc dòng chứa con trỏ hoặc dòng trên (dưới) để sửa lỗi. · Nếu không tìm thấy lỗi thì phải dò lỗi từ đầu CT đến dòng chứa con trỏ (có thể là do lỗi ở phần trên của dòng chứa con trỏ chứ không phải ở dòng chứa con trỏ (hoặc dòng trên nó)).· Các lỗi ngữ nghĩa (CT vẫn thực thi nhưng kết quả sai) trình biên dịch C++ không phát hiện được:Một số từ English thông dung trong lap trìnhUndeclared : không khai báounable: không thểundefined : không xác địnhIncorrectly: ko chính xácSymbol : biểu tượngStatement: câu lệnh, khai báoParameter: tham sốArgument: đối sốDeclaration: kê khaiTerminated: chấm dứtSyntax : cú phápConstant: hằng sốExpression: biểu thức1. ( expected: thiếu ‘(‘ 2. ) expected: thiếu ‘)’3. , expected: thiếu ‘,’4. : expected after private: thiếu ‘:’ sau private5. : expected after protected: thiếu ‘:’ sau protected6. : expected after public: thiếu ‘:’ sau public7. < expected: thiếu dấu <8. { expected:thiếu dấu {9. } expected: thiếu dấu }10. Array bounds missing ]: thiếu ‘]’ bao dãy11. Array must have at least one element: dãy phải có ít nhất một phần tử12. Array size too large: kích cỡ dãy quá lớn13. Body already defined for this function: nội dung hàm này đã được viết.14. Call of nonfunction: tên được gọi không được khai báo như một hàm, do khai báo hàm không chính xác hoặc viết sai tên hàm.15. Cannot cast from 'type1' to 'type2': không thể ép từ kiểu ‘type1’ đến kiểu 'type2'16. Cannot convert 'type1' to 'type2': không thể chuyển đổi 'type1' thành 'type2'17. Cannot modify a const object: không thể thay đổi một đối tượng hằng (const)18. Cannot overload 'main': không thể định nghĩa chồng hàm main19. Cannot use tiny or huge memory model with Windows: không thể sử dụng mô hình bộ nhớ tiny hoặc huge với Windows20. Cannot open such file or directory “xxx”: không thể mở file hoặc thư mục xxx21. Cannot open “Debug\..” for writting: không thể mở file Debug\.. để ghi (hãyđóng CT đã chạy trước đây để có thể chạy lại CT)22. Case outside of switch: ‘case’ bên ngoài switch23. Case statement missing ‘:’: ‘case’ thiếu dấu ‘:’24. Character constant must be one or two characters long: hằng ký tự chỉ có thể là một ký tự (‘a’) hoặc hai ký tự (‘\n’)25. Compound statement missing }: thiếu dấu } cho khối lệnh (câu lệnh phức).26. Constant expression required: dãy phải được khai báo với kích thước là hằng số(thường là do khai báo hằng (#define) không đúng).27. Constant variable 'variable' must be initialized: biến có kiểu const phải được khởi tạo (vì ta không thể gán giá trị cho biến có kiểu const trong quá trình thi hành CT). Thực hành nhập môn lập trình 1028. Could not find a match for argument(s): các đối số không phù hợp (kiểm tra lại khai báo hàm và các đối số truyền vào)29. Could not find file 'filename': không thể tìm file 'filename'30. Declaration does not specify a tag or an identifier: khai báo (kiểu struct hoặc kiểu union) không chứa thành phần31. Declaration is not allowed here: không cho phép khai báo ở đây32. Declaration missing ‘;’: khai báo thiếu dấu ‘;’33. Declaration syntax error: khai báo sai lỗi cú pháp34. Declaration terminated incorrectly: kết thúc khai báo không chính xác35. Declaration was expected: khai báo được mong muốn ở đây nhưng không tìm thấy36. Default argument value redeclared: giá trị của tham số mặc định bên trong hàm bị thay đổi37. Default argument value redeclared for parameter 'parameter': giá trị của tham số (đối số) mặc định 'parameter' bên trong hàm bị thay đổi38. Default expression may not use local variables: một biểu thức tham số (đối số)mặc định bên trong hàm không được phép sử dụng tham số khác39. Default outside of switch: default bên ngoài switch40. Default value missing: tham số theo sau một tham số mặc định phải có giá trị mặc định41. Default value missing following parameter 'parameter': thiếu giá trị mặc định cho tham số 'parameter' (vì nó theo sau một tham số mặc định nên phải có giá trị mặc định)42. Define directive needs an identifier: khai báo define cần có một tên43. Delete array size missing ]: thiếu ‘]’ khi hủy một dãy44. Division by zero: chia cho 045. do statement must have while: do phải có while 46. do-while statement missing :) do-while thiếu dấu ‘(’47. do-while statement missing ): do-while thiếu dấu ‘)’48. do-while statement missing ;: do-while thiếu dấu ‘;’49. Duplicate case: mỗi case trong switch phải có giá trị đi kèm50. Enum syntax error: khai báo kiểu enum sai cú pháp51. Expression expected: một biểu thức được mong muốn ở đây nhưng ký hiệu hiện thời không thể bắt đầu cho một biểu thức52. Expression of scalar type expected: mong muốn biểu thức có kiểu vô hướng. Các toán tử !, ++, và – yêu cầu một biểu thức có kiểu vô hướng (char, short, int,long, enum, float, double, long double, pointer)53. Expression syntax: cú pháp biểu thức54. File name too long: tên file qúa dài55. For statement missing ‘(‘: câu lệnh for thiếu ‘(’56. For statement missing ): câu lệnh for thiếu ‘)’57. For statement missing ;: câu lệnh for thiếu ‘)’58. 'function' cannot return a value: hàm không thể trả về giá trị (nó là hàm void)59. 'function' must be declared with no parameters: hàm phải được khai báo với không tham số 60. 'function' must be declared with one parameter: hàm phải được khai báo với một tham số Thực hành nhập môn lập trình1161. 'function' must be declared with two paraameters: hàm phải được khai báo với một tham số62. 'function1' cannot be distinguished from 'function2': không thể phân biệt 'function1' với 'function2'63. Function 'function' should have a prototype: hàm 'function' nên có tiêu đề.64. Function call missing ): thiếu dấu ‘)’ khi gọi hàm.65. Function should return a value: chưa trả về giá trị cho hàm66. 'identifier' cannot start a parameter declaration: 'identifier' không thể bắt đầu cho khai báo một tham số67. 'identifier' is not a member of struct: 'identifier' không phải là thành phần của struct68. 'identifier' is not a non-static member and can't be initialized here: 'identifier' không phải là một biến tĩnh và không thể được khởi tạo ở đây69. 'identifier' is not a parameter: 'identifier' không phải là một tham số70. Identifier expected: mong muốn một định danh71. If statement missing :) câu lệnh if thiếu ‘(‘72. If statement missing ): câu lệnh if thiếu ‘)‘73. Illegal character 'character' (0x'value'): hằng ký tự sai74. Illegal structure operation: toán tử trên struct không đúng (chỉ có thể là: ‘.’, &,=)75. Illegal use of floating point: toán tử trên số thực chấm động không đúng (chỉ có thể là: SHL, SHR, AND, OR, XOR, NOT, ? :, *, …)76. Improper use of typedef 'identifier': kiểm tra khai báo 'identifier' ở dòng typedef77. Incorrect number format: định dạng số không đúng78. Incorrect use of default: sau default không có dấu ‘:’79. Invalid use of dot: sử dụng dấu ‘.’ không đúng, ví dụ:struct foo {int x;int y;}p = {0,0};int main (…){p.x++; /* Đúng */p. y++; /* Sai: Invalid use of dot */return 0;}80. Lvalue required: thành phần bên trái của lệnh gán phải là biến81. main must have a return type of int: hàm main phải return về kiểu int82. Misplaced break: break không nằm trong switch hoặc một vòng lặp83. Misplaced continue: continue không nằm trong một vòng lặp84. Misplaced else: else không có if85. Missing xxx before yyy: thiếu xxx trước yyy86. Missing function header (old-style): sai tiêu đề ở phần định nghĩa hàm (có thểmthừa dấu ; sau tiêu đề)87. Multiple declaration for 'identifier': trùng khai báo cho 'identifier'88. Need an identifer to declare: cần một định danh cho khai báo89. No : following the ?: không có : sau ? trong cấu trúc tam phân (… ? … : … ) Thực hành nhập môn lập trình 1290. Not an allowed type: không cho phép kiểu này (chẳng hạn, không thể trả về dữ liệu kiểu mảng tĩnh cho hàm)91. Numeric constant too large: hằng số quá lớn92. new line in constant: thiếu dấu ”93. operator [] missing ]: toán tử [] thiếu ]94. sizeof may not be applied to a function: toán tử sizeof không thể áp dụng cho hàm95. Size of 'identifier' is unknown or zero: kích thước của 'identifier' không biết hoặc là 096. Size of the type is unknown or zero: kích thước của kiểu không biết hoặc là 097. Statement missing ‘;’: thiếu dấu ‘;’98. Structure size too large: kích thước của struct quá lớn99. Switch selection expression must be of integral type: biểu thức chọn của switch phải là kiểu nguyên100. unexpected end of file: thiếu }101. xxx undeclared identifier: thiếu khai báo xxx C++ là mt ngôn ng mnh, đa nn tng. Vic hc lp trình C++ không phi là chuyn đơn gin như nói là có th làm được mà nó là mt quá trình tích lũy kinh nghim trên cơ s thc hành thường xuyên. Nhng người mi bt đu vi ngôn ng này thường gp phi nhng li làm h sm nn lòng, nhưng thc s nhng li đó có quá khó không? Vì vy bài viết này s c gng gii thích mt s li cơ bn thường gp phi đi vi nhng ai mi bt đu (beginners) hc lp trình C++. 102. Không khai báo biến (Undeclared Variables) int main() { cin>>x; cout<<x; } Ti sao chương trình trên li b li nh? – Lý do là trình biên dch ca bn không biết x là cái gì. Bn cn phi khai báo biến x. Ví d như: int main() { int x; cin>>x; cout<<x; } –> Hãy nh khai báo biến. 103. Không khi to giá tr cho biến (uninitialized variable) Hãy xem đon chương trình dưới đây: int count; while(count<100) { cout<<count; } Bn t hi, ti sao chương trình li không in ra gì hết vy? Lưu ý rng, đon chương trình trên, biên count chưa được khi to giá tr. Vì vy khi chương trình chy nó có th là giá tr bt k nào trong dãy các s nguyên (int). Có th nó s có giá tr là 586 chng hn, vy thì nó s không vào trong vòng lp while khiến cho kết qu chương trình b sai, có th chương trình s in ra kết qu là các giá tr rác t1000 đến 99. –> Nên nh khi to giá tr cho biến.04. Thiết lp mt biết vi mt giá tr chưa khi to int a, b; int sum=a+b; cout<<"Enter two numbers to add: "; cin>>b; cout<<"The sum is: "<<sum; When Run: Enter two numbers to add: 1 3 The sum is: -1393 Có gì sai vi chương trình trên? Thông thường các lp trình viên mi bt đu tin rng các biến làm vic ging như phương trình (equations). Nếu bn chđnh mt biến bng kết qu ca mt toán t trên nhiu biến khác mà bt c khi nào nhng thay đi biến s (đây là a và b), giá tr ca biến cũng s thay đi. Trong C++, phép gán (assignment) không làm vic trong trường hp này: đó là mt cách đi phó. Khi bn gán giá tr cho mt biến, nó có có giá trđó cho đến khi bn gán cho nó mt giá tr khác. Trong chương trình ví d trên, bi vì a, b không được khi to giá tr nên tng ca chúng s là mt giá tr rác ngu nhiên. Có th sa chương trình trên như sau: int a, b; int sum; cout<<"Enter two numbers to add: "; cin>>b; cin>>a; sum=a+b; cout<<"The sum is: "<<sum; 105. S dng mt du bng trong phép so sánh (Using the single equal sign to check equality) char x='Y'; while(x='Y') { //... cout<<"Continue? (Y/N)"; cin>>x; } Ti sao vòng lp ca tôi không bao gi kết thúc? Nếu bn s dng mt du bng trong phép so sánh, chương trình ca bn thay vì so sánh giá tr bên trái cóđúng vi giá tr bên phi hay không thì nó s thc hin phép gán giá tr bên phi cho bên trái, và phép gán này tt nhiên tr v giá tr TRUE. Do đó vòng lp không bao gi kết thúc. Do đó bn nên nh s dng == cho phép so sánh ca mình. Và li khuyên trong trường hp này là nên đt biến phía bên phi giá tr đ cho chương trình báo li thay vì thc hin mt vòng lp vô hn. Chương trình có th viết li như sau: char x='Y'; while('Y'==x) { //... cout<<"Continue? (Y/N)"; cin>>x; } 106. Không khai báo hàm (Undeclared function) int main() { menu(); } void menu(){ //...} Chương trình trên đã xy ra li gì? Trình biên dch không biết hàm menu() được khai báo trong hàm main() là cái gì. Lý do là bn đãđnh nghĩa hàm menu() phía dưới hàm main(). Do đó bn nên viết hàm menu() phía trên hàm main(), hoc s dng mt khai báo nguyên mu (prototype ) cho hàm menu() ca bn nếu bn mun đnh nghĩa nó bên dưới hàm main(), ging như: void menu(); int main() { menu(); } void menu(){ ...} 107. Tha du chm phy (Extra semicolons) int x; for(x=0; x<100; x++); cout<<x; Output chương trình ca bn là bao nhiêu? Có thc s là tng t 0 99? Tt nhiên kết qu chương trình đưa ra không phi theo ý bn mun. Bi vì trong chương trình trên bn đã tha mt du chm phy (;) sau vòng lp for. Nếu bn đt tha mt du chm phy bt k nơi nào trong chương trình thì thì rt có th chương trình ca bn s báo li. Đon chương trình trên đúng s là: int x; for(x=0; x<100; x++) cout<<x; 108. Vượt quá gii hn ca mng (Overstepping array boundaries) int array[10]; //... for(int x=1; x<=10; x++) cout<<array[x]; Câu hi đt ra: Ti sao chương trình có chy ra có kết qu không đúng? Bn nên nh rng, mt mng khi khai báo s bt đu t phn t s 0 ch không phi là s 1, và kế thúc s làđ dài ca mng khai báo trđi 1. Ví d, nếu bn có mt mng 10 phn t, phn tđu tiên trong mng ca bn là phn t 0 và phn t cui cùng là phn t th 9. Chương trình trên sa li như sau: int array[10]; //... for(int x=0; x<10; x++) cout<<array[x]; 109. Lm dng các toán t &&, || (Misusing the && and || operator) int value; do { //... value=10; } while(!(value==10) || !(value==20)) Chương trình trên sai, ti sao ?Description: Disappointed smile Bn nên nh mt chút ti công thc ca hàm Boolean là: !(A || B) tương đương vi !A && !B Do đó chương trình đúng s là: int value; do { //... value=10; }while(!(value==10) && !(value==20)) Đây ch là bước khi đu trong con đường lp trình. Còn nhiu chướng ngi phía trước. Do đó chúng ta phi c gng tht nhiu! Tags Chuyen nganh Lap trinh C va C plus Mới hơn Cũ hơn

Popular Posts

[Thuật toán] Thuật toán tìm kiếm tuần tự

tháng 3 04, 2016 2

[Tự học lập trình C/C++] Viết hàm tính giá trị trung bình cộng của các phần tử có trong mảng.

tháng 5 06, 2016 3

[Tự học lập trình C/C++] Các lỗi thường gặp trong lập trình

tháng 5 17, 2016 4

[Hệ thống thông tin] Tổng quan về hệ thống thông tin

tháng 10 05, 2015

Đăng ký

Nhận thông báo qua email

Categories

  • Algorithm (27)
  • Chuyen nganh (64)
  • Cong nghe XML (1)
  • Cơ sở dữ liệu (3)
  • Cơ sở lập trình (2)
  • Design Pattern (2)
  • Download mẫu văn bản (1)
  • download winrar (1)
  • Downloads (4)
  • Đồ họa máy tính (6)
  • Giáo dục điện tử (2)
  • Hệ quản trị cơ sở dữ liệu (21)
  • Hệ quản trị cơ sở dữ liệu. (8)
  • Học Power point (2)
  • Hồ sơ xin việc (1)
  • Image processing (3)
  • Kiến trúc Web (1)
  • Lap trinh assembly (4)
  • Lap trinh C va C plus (65)
  • Lap trinh C va C++ (3)
  • Lap trinh C/C++ (2)
  • Lap trinh C# (6)
  • lap trinh co so du lieu (2)
  • Lap trinh he thong (9)
  • lap trinh hop ngu (7)
  • Lap trinh huong doi tuong voi Java (12)
  • lap trinh windows (3)
  • lập trình C (3)
  • lập trình với C# (2)
  • Lập trình windows (7)
  • Mẫu CV (1)
  • Nâng cao chất lượng ảnh (1)
  • News (8)
  • Ngẫm nghĩ (2)
  • Phan tich thiet ke he thong (1)
  • Phat trien he thong (42)
  • quangcaotructuyen (1)
  • Sách (9)
  • sách bán chạy (4)
  • Sách công nghệ thông tin (5)
  • sách kỹ năng (1)
  • SQL cơ bản và nâng cao (1)
  • su dung accsess (3)
  • sudungExcel (28)
  • sudungword (10)
  • System Information (19)
  • thiet bi tin hoc (2)
  • Thu nhan anh (1)
  • Thuật ngữ (1)
  • Thuongmaidientu (4)
  • Tin hoc dai cuong (1)
  • Tin hoc van phong (23)
  • trac nghiem (1)
  • trituenhantao (5)
  • Tư duy thiết kế (2)
  • Windows 7 USB Download Tool (1)
  • xulyanh (5)
  • xử lý ảnh (4)

Main Tags

  • Algorithm
  • Chuyen nganh
  • Cong nghe XML
  • Cơ sở dữ liệu
  • Cơ sở lập trình
  • Design Pattern
  • Download mẫu văn bản
  • download winrar
  • Downloads
  • Đồ họa máy tính
  • Giáo dục điện tử
  • Hệ quản trị cơ sở dữ liệu
  • Hệ quản trị cơ sở dữ liệu.
  • Học Power point
  • Hồ sơ xin việc
  • Image processing
  • Kiến trúc Web
  • Lap trinh assembly
  • Lap trinh C va C plus
  • Lap trinh C va C++
  • Lap trinh C/C++
  • Lap trinh C#
  • lap trinh co so du lieu
  • Lap trinh he thong
  • lap trinh hop ngu
  • Lap trinh huong doi tuong voi Java
  • lap trinh windows
  • lập trình C
  • lập trình với C#
  • Lập trình windows
  • Mẫu CV
  • Nâng cao chất lượng ảnh
  • News
  • Ngẫm nghĩ
  • Phan tich thiet ke he thong
  • Phat trien he thong
  • quangcaotructuyen
  • Sách
  • sách bán chạy
  • Sách công nghệ thông tin
  • sách kỹ năng
  • SQL cơ bản và nâng cao
  • su dung accsess
  • sudungExcel
  • sudungword
  • System Information
  • thiet bi tin hoc
  • Thu nhan anh
  • Thuật ngữ
  • Thuongmaidientu
  • Tin hoc dai cuong
  • Tin hoc van phong
  • trac nghiem
  • trituenhantao
  • Tư duy thiết kế
  • Windows 7 USB Download Tool
  • xulyanh
  • xử lý ảnh

Bài đăng phổ biến

Tập lệnh assembly của Intel 8086/8088 (Phần 3)

tháng 3 06, 2017 2

[Tự học lập trình C] Chương trình con và hàm

tháng 3 08, 2016 3

Tập lệnh assembly của Intel 8086/8088 (Phần 1)

tháng 3 06, 2017 Tin học cơ bản Copyright 2021 Tinhoccoban.net

Bài viết mới nhất

Tin học cơ bản - Nền tảng của mọi kỹ năng

Mọi thông tin trên blog đều được giữ bản quyền bởi Tin học cơ bản. Các bạn nếu muốn lấy thông tin từ blog vui lòng ghi rõ nguồn Tinhoccoban.net

TIN HỌC CƠ BẢN

Chia sẻ với ứng dụng khác Sao chép Liên kết bài đăng Sao chép

Biểu mẫu liên hệ

Từ khóa » C Free Bị Lỗi