c语言错误大全
- 格式:doc
- 大小:36.50 KB
- 文档页数:7
C语言编程最常见的15个错误C语言是一种结构化语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
以下是关于C语言编程最常见的15个错误,希望大家认真阅读!1.书写标识符时,忽略了大小写字母的区别。
main(){ int a=5;printf("%d",A); }编译程序把a和A认为是两个不同的变量名,而显示出错信息。
C认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){ float a,b;printf("%d",a%b); }%是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在BASIC 程序中可以写if (a=3) then …但C语言中,“=”是赋值运算符,“==”是关系运算符。
如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。
改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
fatal error C1004: unexpected end of file found未找到文件末尾(可能是括号匹配问题)fatal error C1021: invalid preprocessor command '1nclude'无效的编译预处理命令'1nclude'fatal error C1083: Cannot open include file: 'stdi.h': No such file or directory 不能打开头文件'stdi.h',文件或文件夹不存在error C2101: '&' on constant不能计算常量的地址error C2059: syntax error : 'while'在'while'附近,存在语法错误error C2061: syntax error : identifier 'x'标识符x的附近,存在语法错误error C2065: 'i' : undeclared identifier变量i未定义error C2078: too many initializers数组/结构等变量初始化时的数据太多error C2087: '<Unknown>' : missing subscript丢失数组下标error C2106: '=' : left operand must be l-value'='的左侧应当是左值,即不能是常量error C2115: '=' : incompatible types'='两侧的类型不兼容error C2133: 'a' : unknown sizea(可能是数组名)的大小不确定。
C语言程序设计中的常见错误和解决在C语言程序设计中,很多初学者经常会遇到一些常见的错误。
这些错误可能是语法错误、逻辑错误或者是其他一些常见问题导致的。
本文将介绍一些经常出现的C语言程序设计错误,并提供相应的解决方法,帮助读者更好地理解和掌握C语言编程。
一、语法错误1. 括号未匹配括号未匹配是C语言中常见的语法错误之一。
在编写代码时,经常会使用到括号,如if语句、for循环等。
如果不小心忘记关闭某个括号,就会导致括号未匹配的错误。
解决方法:仔细检查代码中的括号是否匹配,并确保每个左括号都有相应的右括号。
2. 分号丢失分号丢失是C语言中另一个常见的语法错误。
在C语言中,分号用于分隔语句,如果遗漏了分号,编译器就无法识别出语句的结束。
解决方法:检查每一行语句的末尾,确保每个语句都以分号结尾。
3. 变量未声明在使用变量之前,必须先声明该变量。
如果没有先声明变量就直接使用,编译器将无法识别该变量,从而报错。
解决方法:在使用变量之前,先进行变量声明。
二、逻辑错误1. 循环控制条件错误在编写循环语句时,控制条件的错误是常见的逻辑错误。
如果循环的控制条件错误,循环可能无法正常结束或者根本无法执行。
解决方法:仔细检查循环的控制条件,确保条件符合预期,并在循环体内更新循环变量。
2. 数组越界访问在C语言中,数组的索引从0开始,通过索引访问数组元素时,如果索引超出了数组的范围,就会导致数组越界访问的错误。
解决方法:确保数组索引在正确的范围内,避免越界访问。
如果需要遍历数组,可以使用循环来控制数组的访问范围。
三、其他常见问题及解决方法1. 变量类型不匹配在赋值操作或者表达式计算时,如果不同类型的变量之间进行操作,则会导致变量类型不匹配的错误。
解决方法:确保操作的变量类型相同或者进行强制类型转换,以保证变量类型的匹配。
2. 内存泄漏在C语言中,手动分配内存的操作是常见的。
如果分配了内存空间,但在使用完毕后未及时释放,就会导致内存泄漏。
C语言错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Error in real constant 实型常量错误error 7: Error in integer constant 整型常量错误error 8: String constant exceeds line 字符串常量超过一行error 10: Unexpected end of file 文件非正常结束error 11: Line too long 行太长error 12: Type identifier expected 未定义的类型标识符error 13: Too many open files 打开文件太多error 14: Invalid file name 无效的文件名error 15: File not found 文件未找到error 16: Disk full 磁盘满error 17: Invalid compiler directive 无效的编译命令error 18: Too many files 文件太多error 19: Undefined type in pointer def 指针定义中未定义类型error 20: Variable identifier expected 缺变量标识符error 21: Error in type 类型错误error 22: Structure too large 结构类型太长error 23: Set base type out of range 集合基类型越界error 24: File components may not be files or objectsfile分量不能是文件或对象error 25: Invalid string length 无效的字符串长度error 26: Type mismatch 类型不匹配error 27:error 27:Invalid subrange base type 无效的子界基类型error 28:Lower bound greater than upper bound 下界超过上界error 29:Ordinal type expected 缺有序类型error 30:Integer constant expected 缺整型常量error 31:Constant expected 缺常量error 32:Integer or real constant expected 缺整型或实型常量error 33:Pointer Type identifier expected 缺指针类型标识符error 34:Invalid function result type 无效的函数结果类型error 35:Label identifier expected 缺标号标识符error 36:BEGIN expected 缺BEGINerror 37:END expected 缺ENDerror 38:Integer expression expected 缺整型表达式error 39:Ordinal expression expected 缺有序类型表达式error 40:Boolean expression expected 缺布尔表达式error 41:Operand types do not match 操作数类型不匹配error 42:Error in expression 表达式错误error 43:Illegal assignment 非法赋值error 44:Field identifier expected 缺域标识符error 45:Object file too large 目标文件太大error 46:Undefined external 未定义的外部过程与函数error 47:Invalid object file record 无效的OBJ文件格式error 48:Code segment too large 代码段太长error 49:Data segment too large 数据段太长error 50:DO expected 缺DOerror 51:Invalid PUBLIC definition 无效的PUBLIC定义error 52:Invalid EXTRN definition 无效的EXTRN定义error 53: Too many EXTRN definitions 太多的EXTRN定义error 54:OF expected 缺OFerror 55:INTERFACE expected 缺INTERFACEerror 56:Invalid relocatable reference 无效的可重定位引用error 57:THEN expected 缺THENerror 58:TO or DOWNTO expected 缺TO或DOWNTO error 59:Undefined forward 提前引用未经定义的说明error 61:Invalid typecast 无效的类型转换error 62:Division by zero 被零除error 63:Invalid file type 无效的文件类型error 64:Cannot read or write variables of this type 不能读写此类型变量error 65:Pointer variable expected 缺指针类型变量error 66:String variable expected 缺字符串变量error 67:String expression expected 缺字符串表达式error 68:Circular unit reference 单元UNIT部件循环引用error 69:Unit name mismatch 单元名不匹配error 70:Unit version mismatch 单元版本不匹配error 71:Internal stack overflow 内部堆栈溢出error 72:Unit file format error 单元文件格式错误error 73:IMPLEMENTATION expected 缺IMPLEMENTATIONerror 74:Constant and case types do not match 常量和CASE类型不匹配error 75:Record or object variable expected 缺记录或对象变量error 76:Constant out of range 常量越界error 77:File variable expected 缺文件变量error 78:Pointer expression expected 缺指针表达式error 79:Integer or real expression expected 缺整型或实型表达式error 80:Label not within current block 标号不在当前块内error 81:Label already defined 标号已定义error 82:Undefined label in preceding statement part 在前面未定义标号error 83:Invalid @ argument 无效的@参数error 84:UNIT expected 缺UNITerror 85: ";" expected 缺“;”error 86:":" expected 缺“:”error 87:"," expected 缺“,”error 88:"(" expected 缺“(”error 89:")" expected 缺“)”error 90:"=" expected 缺“=”error 91:":=" expected 缺“:=”error 92:"[" or "(." Expected 缺“[”或“(.”error 93: "]" or ".)" expected 缺“]”或“.)”error 94:"." expected 缺“.”error 95: ".." expected 缺“..”error 96:Too many variables 变量太多error 97:Invalid FOR control variable 无效的FOR循环控制变量error 98:Integer variable expected 缺整型变量error 99:Files and procedure types are not allowed here 该处不允许文件和过程类型error 100:String length mismatch 字符串长度不匹配error 101:Invalid ordering of fields 无效域顺序error 102:String constant expected 缺字符串常量error 103:Integer or real variable expected 缺整型或实型变量error 104:Ordinal variable expected 缺有序类型变量error 105:INLINE error INLINE错误error 106:Character expression expected 缺字符表达式error 107:Too many relocation items 重定位项太多error 108:Overflow in arithmetic operation 算术运算溢出error 112:CASE constant out of range CASE常量越界error 113:Error in statement 表达式错误error 114:Cannot call an interrupt procedure 不能调用中断过程error 116:Must be in 8087 mode to compile this 必须在8087模式编译error 117:Target address not found 找不到目标地址error 118:Include files are not allowed here 该处不允许INCLUDE文件error 119:No inherited methods are accessible here 该处继承方法不可访问error 121:Invalid qualifier 无效的限定符error 122:Invalid variable reference 无效的变量引用error 123:Too many symbols 符号太多error 124:Statement part too large 语句体太长error 126:Files must be var parameters 文件必须是变量形参error 127:Too many conditional symbols 条件符号太多error 128:Misplaced conditional directive 条件指令错位error 129:ENDIF directive missing 缺ENDIF指令error 130:Error in initial conditional defines 初始条件定义错误error 131:Header does not match previous definition 和前面定义的过程或函数不匹配error 133:Cannot evaluate this expression 不能计算该表达式error 134:Expression incorrectly terminated 表达式错误结束error 135:Invalid format specifier 无效格式说明符error 136:Invalid indirect reference 无效的间接引用error 137:Structured variables are not allowed here 该处不允许结构变量error 138:Cannot evaluate without System unit 没有System单元不能计算error 139:Cannot access this symbol 不能存取符号error 140:Invalid floating point operation 无效的符号运算error 141:Cannot compile overlays to memory 不能编译覆盖模块至内存error 142:Pointer or procedural variable expected 缺指针或过程变量error 143:Invalid procedure or function reference 无效的过程或函数调用error 144:Cannot overlay this unit 不能覆盖该单元error 146:File access denied 不允许文件访问error 147:Object type expected 缺对象类型error 148:Local object types are not allowed 不允许局部对象类型error 149:VIRTUAL expected 缺VIRTUALerror 150: Method identifier expected 缺方法标识符error 151:Virtual constructors are not allowed 不允许虚构造函数error 152:Constructor identifier expected 缺构造函数标识符error 153:Destructor identifier expected 缺析构函数标识符error 154:Fail only allowed within constructors 只能在构造函数内使用Fail标准过程error 155:Invalid combination of opcode and operands 操作数与操作符无效组合error 156:Memory reference expected 缺内存引用指针error 157:Cannot add or subtract relocatable symbols 不能加减可重定位符号error 158:Invalid register combination 无效寄存器组合error 159:286/287 instructions are not enabled 未激活286/287指令error 160:Invalid symbol reference 无效符号指针error 161:Code generation error 代码生成错误error 162:ASM expected 缺ASMerror 166:Procedure or function identifier expected 缺过程或函数标识符error 167:Cannot export this symbol 不能输出该符号error 168:Duplicate export name 外部文件名重复error 169:Executable file header toerror 170:Too many segments 段太多fatal error C1004: unexpected end of file found 未找到文件末尾(可能是括号匹配问题)fatal error C1021: invalid preprocessor command '1nclude' 无效的编译预处理命令'1nclude' fatal error C1083: Cannot open include file: 'stdi.h': No such file or directory 不能打开头文件'stdi.h',文件或文件夹不存在 error C2101: '&' on constant 不能计算常量的地址error C2059: syntax error : 'while' 在'while'附近,存在语法错误error C2061: syntax error : identifier 'x' 标识符x的附近,存在语法错误 error C2065: 'i' : undeclared identifier 变量i未定义error C2078: too many initializers 数组/结构等变量初始化时的数据太多error C2087: '<Unknown>' : missing subscript 丢失数组下标error C2106: '=' : left operand must be l-value '='的左侧应当是左值,即不能是常量 error C2115: '=' : incompatible types '='两侧的类型不兼容error C2133: 'a' : unknown size a(可能是数组名)的大小不确定。
C語言錯誤大全1. Ambiguous operators need parentheses —不明確的運算需要用括號括起2. Ambiguous symbol 'xxx' —不明確的符號3. Argument list syntax error —參數表語法錯誤4. Array bounds missing —丟失數組界限符5. Array size toolarge —數組尺寸太大6. Bad character in paramenters —參數中有不適當的字符7. Bad file name format in include directive —包含命令中文件名格式不正確8. Bad ifdef directive synatax —編譯預處理ifdef有語法錯9. Bad undef directive syntax —編譯預處理undef有語法錯10. Bit field too large —位字段太長11. Call of non-function —調用未定義的函數12. Call to function with no prototype —調用函數時沒有函數的說明13. Cannot modify a const object —不允許修改常量對象14. Case outside of switch —漏掉了case 語句15. Case syntax error — Case 語法錯誤16. Code has no effect —代碼不可能執行到17. Compound statement missing{ —分程序漏掉"{"18. Conflicting type modifiers —不明確的類型說明符19. Constant expression required —要求常量表達式20. Constant out of range in comparison —在比較中常量超出範圍21. Conversion may lose significant digits —轉換時會丟失意義的數字22. Conversion of near pointer not allowed —不允許轉換近指針23. Could not find file 'xxx' —找不到XXX文件24. Declaration missing ; —說明缺少";"25. Declaration syntax error —說明中出現語法錯誤26. Default outside of switch — Default 出現在switch語句之外27. Define directive needs an identifier —定義編譯預處理需要標識符28. Division by zero —用零作除數29. Do statement must have while — Do-while語句中缺少while部分30. Enum syntax error —枚舉類型語法錯誤31. Enumeration constant syntax error —枚舉常數語法錯誤32. Error directive :xxx —錯誤的編譯預處理命令33. Error writing output file —寫輸出文件錯誤34. Expression syntax error —表達式語法錯誤35. Extra parameter in call —調用時出現多餘錯誤36. File name too long —文件名太長37. Function call missing ) —函數調用缺少右括號38. Fuction definition out of place —函數定義位置錯誤39. Fuction should return a value —函數必需返回一個值40. Goto statement missing label — Goto語句沒有標號41. Hexadecimal or octal constant too large — 16進制或8進制常數太大42. Illegal character 'x' —非法字符x43. Illegal initialization —非法的初始化44. Illegal octal digit —非法的8進制數字45. Illegal pointer subtraction —非法的指針相減46. Illegal structure operation —非法的結構體操作47. Illegal use of floating point —非法的浮點運算48. Illegal use of pointer —指針使用非法49. Improper use of a typedefsymbol —類型定義符號使用不恰當50. In-line assembly not allowed —不允許使用行間匯編51. Incompatible storage class —存儲類別不相容52. Incompatible type conversion —不相容的類型轉換53. Incorrect number format —錯誤的數據格式54. Incorrect use of default — Default使用不當55. Invalid indirection —無效的間接運算56. Invalid pointer addition —指針相加無效57. Irreducible expression tree —無法執行的表達式運算58. Lvalue required —需要邏輯值0或非0值59. Macro argument syntax error —宏參數語法錯誤60. Macro expansion too long —宏的擴展以後太長61. Mismatched number of parameters in definition —定義中參數個數不匹配62. Misplaced break —此處不應出現break語句63. Misplaced continue —此處不應出現continue語句64. Misplaced decimal point —此處不應出現小數點65. Misplaced elif directive —不應編譯預處理elif66. Misplaced else —此處不應出現else67. Misplaced else directive —此處不應出現編譯預處理else68. Misplaced endif directive —此處不應出現編譯預處理endif69. Must be addressable —必須是可以編址的70. Must take address of memory location —必須存儲定位的地址71. No declaration for function 'xxx' —沒有函數xxx的說明72. No stack —缺少堆棧73. No type information —沒有類型信息74. Non-portable pointer assignment —不可移動的指針(地址常數)賦值75. Non-portable pointer comparison —不可移動的指針(地址常數)比較76. Non-portable pointer conversion —不可移動的指針(地址常數)轉換77. Not a valid expression format type —不合法的表達式格式78. Not an allowed type —不允許使用的類型79. Numeric constant too large —數值常太大80. Out of memory —內存不夠用81. Parameter 'xxx' is never used —能數xxx沒有用到82. Pointer required on left side of -> —符號->的左邊必須是指針83. Possible use of 'xxx' before definition —在定義之前就使用了xxx(警告)84. Possibly incorrect assignment —賦值可能不正確85. Redeclaration of 'xxx' —重複定義了xxx86. Redefinition of 'xxx' is not identical — xxx的兩次定義不一致87. Register allocation failure —寄存器定址失敗88. Repeat count needs an lvalue —重複計數需要邏輯值89. Size of structure or array not known —結構體或數給大小不確定90. Statement missing ; —語句後缺少";"91. Structure or union syntax error —結構體或聯合體語法錯誤92. Structure size too large —結構體尺寸太大93. Sub scripting missing ] —下標缺少右方括號94. Superfluous & with function or array —函數或數組中有多餘的"&"95. Suspicious pointer conversion —可疑的指針轉換96. Symbol limit exceeded —符號超限97. Too few parameters in call —函數調用時的實參少於函數的參數不98. Too many default cases — Default太多(switch語句中一個)99. Too many error or warning messages —錯誤或警告信息太多100. Too many type in declaration —說明中類型太多101. Too much auto memory in function —函數用到的局部存儲太多102. Too much global data defined in file —文件中全局數據太多103. Two consecutive dots —兩個連續的句點104. Type mismatch in parameter xxx —參數xxx類型不匹配105. Type mismatch in redeclaration of 'xxx' — xxx重定義的類型不匹配106. Unable to create output file 'xxx' —無法建立輸出文件xxx107. Unable to open include file 'xxx' —無法打開被包含的文件xxx108. Unable to open input file 'xxx' —無法打開輸入文件xxx109. Undefined label 'xxx' —沒有定義的標號xxx110. Undefined structure 'xxx' —沒有定義的結構xxx111. Undefined symbol 'xxx' —沒有定義的符號xxx112. Unexpected end of file in comment started on line xxx —從xxx行開始的注解尚未結束文件不能結束113. Unexpected end of file in conditional started on line xxx —從xxx 開始的條件語句尚未結束文件不能結束114. Unknown assemble instruction —未知的匯編結構115. Unknown option —未知的操作116. Unknown preprocessor directive: 'xxx' —不認識的預處理命令xxx117. Unreachable code —無路可達的代碼118. Unterminated string or character constant —字符串缺少引號119. User break —用戶強行中斷了程序120. Void functions may not return a value — Void類型的函數不應有返回值121. Wrong number of arguments —調用函數的參數數目錯122. 'xxx' not an argument — xxx不是參數123. 'xxx' not part of structure — xxx不是結構體的一部分124. xxx statement missing ( — xxx語句缺少左括號125. xxx statement missing ) — xxx語句缺少右括號126. xxx statement missing ; — xxx缺少分號127. xxx' declared but never used —說明了xxx但沒有使用128. xxx' is assigned a value which is never used —給xxx賦了值但未用過C語言編譯錯誤信息錦集說明:Turbo C 的源程序錯誤分為三種類型:致命錯誤、一般錯誤和警告。
C语⾔错误⼤全及中⽂解释1: Ambiguous operators need parentheses — 不明确的运算需要⽤括号括起2: Ambiguous symbol xxx — 不明确的符号3: Argument list syntax error — 参数表语法错误4: Array bounds missing — 丢失数组界限符5: Array size toolarge — 数组尺⼨太⼤6: Bad character in paramenters — 参数中有不适当的字符7: Bad file name format in include directive — 包含命令中⽂件名格式不正确8: Bad ifdef directive synatax — 编译预处理ifdef有语法错9: Bad undef directive syntax — 编译预处理undef有语法错10: Bit field too large — 位字段太长11: Call of non-function — 调⽤未定义的函数12: Call to function with no prototype — 时没有函数的说明13: Cannot modify a const object — 不允许修改常量对象14: Case outside of switch — 漏掉了case 语句15: Case syntax error — Case 语法错误16: Code has no effect — 代码不可能执⾏到17: Compound statement missing{ — 分程序漏掉"{"18: Conflicting type modifiers — 不明确的类型说明符19: Constant expression required — 要求常量表达式20: Constant out of range in comparison — 在⽐较中常量超出范围21: Conversion may lose significant digits — 转换时会丢失意义的数字22: Conversion of near pointer not allowed — 不允许转换近指针23: Could not find file xxx — 找不到XXX⽂件24: Declaration missing ; — 说明缺少";"25: Declaration syntax error — 说明中出现语法错误26: Default outside of switch — Default 出现在switch语句之外27: Define directive needs an identifier — 定义编译预处理需要标识符28: Division by zero — ⽤零作除数29: Do statement must have while — Do-while语句中缺少while部分30: Enum syntax error — 语法错误31: Enumeration constant syntax error — 枚举常数语法错误32: Error directive :xxx — 错误的编译预处理命令33: Error writing output file — 写输出⽂件错误34: Expression syntax error — 表达式语法错误35: Extra parameter in call — 调⽤时出现多余错误36: File name too long — ⽂件名太长37: Function call missing ) — 缺少右括号38: Fuction definition out of place — 函数定义位置错误39: Fuction should return a value — 函数必需返回⼀个值40: Goto statement missing label — 没有标号41: Hexadecimal or octal constant too large — 或8进制常数太⼤42: Illegal character x — ⾮法字符x43: Illegal initialization — ⾮法的初始化44: Illegal octal digit — ⾮法的8进制数字 A45: Illegal pointer subtraction — ⾮法的指针相减46: Illegal structure operation — ⾮法的结构体操作47: Illegal use of floating point — ⾮法的浮点运算48: Illegal use of pointer — 指针使⽤⾮法49: Improper use of a typedefsymbol — 类型定义符号使⽤不恰当50: In-line assembly not allowed — 不允许使⽤⾏间汇编51: Incompatible storage class — 存储类别不相容52: Incompatible type conversion — 不相容的53: Incorrect number format — 错误的数据格式54: Incorrect use of default — Default使⽤不当55: Invalid indirection — ⽆效的间接运算56: Invalid pointer addition — 指针相加⽆效57: Irreducible expression tree — ⽆法执⾏的表达式运算58: Lvalue required — 需要逻辑值0或⾮0值59: Macro argument syntax error — 宏参数语法错误60: Macro expansion too long — 宏的扩展以后太长61: Mismatched number of parameters in definition — 定义中参数个数不匹配62: Misplaced break — 此处不应出现63: Misplaced continue — 此处不应出现continue语句64: Misplaced decimal point — 此处不应出现⼩数点65: Misplaced elif directive — 不应编译预处理elif66: Misplaced else — 此处不应出现else67: Misplaced else directive — 此处不应出现编译预处理else68: Misplaced endif directive — 此处不应出现编译预处理endif69: Must be addressable — 必须是可以编址的70: Must take address of memory location — 必须存储定位的地址71: No declaration for function xxx — 没有函数xxx的说明72: No stack — 缺少堆栈73: No type information — 没有类型信息74: Non-portable pointer assignment — 不可移动的指针(地址常数)赋值75: Non-portable pointer comparison — 不可移动的指针(地址常数)⽐较76: Non-portable pointer conversion — 不可移动的指针(地址常数)转换77: Not a valid expression format type — 不合法的表达式格式78: Not an allowed type — 不允许使⽤的类型79: Numeric constant too large — 数值常太⼤80: Out of memory — 内存不够⽤81: Parameter xxx is never used — 能数xxx没有⽤到82: Pointer required on left side of -> — 符号->的左边必须是指针83: Possible use of xxx before definition — 在定义之前就使⽤了xxx(警告)84: Possibly incorrect assignment — 赋值可能不正确85: Redeclaration of xxx — 重复定义了xxx86: Redefinition of xxx is not identical — xxx的两次定义不⼀致87: Register allocation failure — 寄存器定址失败88: Repeat count needs an lvalue — 重复计数需要逻辑值89: Size of structure or array not known — 结构体或数给⼤⼩不确定90: Statement missing ; — 语句后缺少";"91: Structure or union syntax error — 结构体或联合体语法错误92: Structure size too large — 结构体尺⼨太⼤93: Sub scripting missing ] — 下标缺少右⽅括号94: Superfluous & with function or array — 函数或数组中有多余的"&"95: Suspicious pointer conversion — 可疑的指针转换96: Symbol limit exceeded — 符号超限97: Too few parameters in call — 时的实参少于函数的参数不98: Too many default cases — Default太多(switch语句中⼀个)99: Too many error or warning messages — 错误或警告信息太多100: Too many type in declaration — 说明中类型太多101: Too much auto memory in function — 函数⽤到的局部存储太多102: Too much global data defined in file — ⽂件中全局数据太多103: Two consecutive dots — 两个连续的句点104: Type mismatch in parameter xxx — 参数xxx类型不匹配105: Type mismatch in redeclaration of xxx — xxx重定义的类型不匹配106: Unable to create output file xxx — ⽆法建⽴输出⽂件xxx107: Unable to open include file xxx — ⽆法打开被包含的⽂件xxx108: Unable to open input file xxx — ⽆法打开输⼊⽂件xxx109: Undefined label xxx — 没有定义的标号xxx110: Undefined structure xxx — 没有定义的结构xxx111: Undefined symbol xxx — 没有定义的符号xxx112: Unexpected end of file in comment started on line xxx — 从xxx⾏开始的注解尚未结束⽂件不能结束113: Unexpected end of file in conditional started on line xxx — 从xxx 开始的条件语句尚未结束⽂件不能结束114: Unknown assemble instruction — 未知的汇编结构115: Unknown option — 未知的操作116: Unknown preprocessor directive: xxx — 不认识的预处理命令xxx117: Unreachable code — ⽆路可达的代码118: Unterminated string or character constant — 字符串缺少引号119: User break — ⽤户强⾏中断了程序120: Void functions may not return a value — Void类型的函数不应有返回值121: Wrong number of arguments — 的参数数⽬错122: xxx not an argument — xxx不是参数123: xxx not part of structure — xxx不是结构体的⼀部分124: xxx statement missing ( — xxx语句缺少左括号125: xxx statement missing ) — xxx语句缺少右括号126: xxx statement missing ; — xxx缺少分号127: xxx declared but never used — 说明了xxx但没有使⽤128: xxx is assigned a value which is never used — 给xxx赋了值但未⽤过。
对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大家:fatal error C1003: error count exceeds number; stopping compilation中文对照:(编译错误)错误太多,停止编译分析:修改之前的错误,再次编译fatal error C1004: unexpected end of file found中文对照:(编译错误)文件未结束分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用或表达式中括号没有配对出现、或者注释符“/*…*/”不完整等fatal error C1083: Cannot open include file: 'xxx': No such file or directory中文对照:(编译错误)无法打开头文件xxx:没有这个文件或路径分析:头文件不存在、或者头文件拼写错误、或者文件为只读fatal error C1903: unable to recover from previous error(s); stopping compilation中文对照:(编译错误)无法从之前的错误中恢复,停止编译分析:引起错误的原因很多,建议先修改之前的错误error C2001: newline in constant中文对照:(编译错误)常量中创建新行分析:字符串常量多行书写error C2006: #include expected a filename, found 'identifier'中文对照:(编译错误)#include命令中需要文件名分析:一般是头文件未用一对双引号或尖括号括起来,例如“#include stdio.h”error C2007: #define syntax中文对照:(编译错误)#define语法错误分析:例如“#define”后缺少宏名,例如“#define”error C2008: 'xxx' : unexpected in macro definition中文对照:(编译错误)宏定义时出现了意外的xxx分析:宏定义时宏名与替换串之间应有空格,例如“#define TRUE"1"”error C2009: reuse of macro formal 'identifier'中文对照:(编译错误)带参宏的形式参数重复使用分析:宏定义如有参数不能重名,例如“#define s(a,a) (a*a)”中参数a重复error C2010: 'character' : unexpected in macro formal parameter list中文对照:(编译错误)带参宏的形式参数表中出现未知字符分析:例如“#define s(r|) r*r”中参数多了一个字符‘|’error C2014: preprocessor command must start as first nonwhite space中文对照:(编译错误)预处理命令前面只允许空格分析:每一条预处理命令都应独占一行,不应出现其他非空格字符error C2015: too many characters in constant中文对照:(编译错误)常量中包含多个字符分析:字符型常量的单引号中只能有一个字符,或是以“\”开始的一个转义字符,例如“char error = 'error';”error C2017: illegal escape sequence中文对照:(编译错误)转义字符非法分析:一般是转义字符位于' ' 或" " 之外,例如“char error = ' '\n;”error C2018: unknown character '0xhh'中文对照:(编译错误)未知的字符0xhh分析:一般是输入了中文标点符号,例如“char error = 'E';”中“;”为中文标点符号error C2019: expected preprocessor directive, found 'character'中文对照:(编译错误)期待预处理命令,但有无效字符分析:一般是预处理命令的#号后误输入其他无效字符,例如“#!define TRUE 1”error C2021: expected exponent value, not 'character'中文对照:(编译错误)期待指数值,不能是字符分析:一般是浮点数的指数表示形式有误,例如123.456Eerror C2039: 'identifier1' : is not a member of 'identifier2'中文对照:(编译错误)标识符1不是标识符2的成员分析:程序错误地调用或引用结构体、共用体、类的成员error C2041: illegal digit 'x' for base 'n'中文对照:(编译错误)对于n进制来说数字x非法分析:一般是八进制或十六进制数表示错误,例如“int i = 081;”语句中数字‘8’不是八进制的基数error C2048: more than one default中文对照:(编译错误)default语句多于一个分析:switch语句中只能有一个default,删去多余的defaulterror C2050: switch expression not integral中文对照:(编译错误)switch表达式不是整型的分析:switch表达式必须是整型(或字符型),例如“switch ("a")”中表达式为字符串,这是非法的error C2051: case expression not constant中文对照:(编译错误)case表达式不是常量分析:case表达式应为常量表达式,例如“case "a"”中“"a"”为字符串,这是非法的error C2052: 'type' : illegal type for case expression中文对照:(编译错误)case表达式类型非法分析:case表达式必须是一个整型常量(包括字符型)error C2057: expected constant expression中文对照:(编译错误)期待常量表达式分析:一般是定义数组时数组长度为变量,例如“int n=10; int a[n];”中n为变量,这是非法的error C2058: constant expression is not integral中文对照:(编译错误)常量表达式不是整数分析:一般是定义数组时数组长度不是整型常量error C2059: syntax error : 'xxx'中文对照:(编译错误)‘xxx’语法错误分析:引起错误的原因很多,可能多加或少加了符号xxxerror C2064: term does not evaluate to a function中文对照:(编译错误)无法识别函数语言分析:1、函数参数有误,表达式可能不正确,例如“sqrt(s(s-a)(s-b)(s-c));”中表达式不正确2、变量与函数重名或该标识符不是函数,例如“int i,j; j=i();”中i不是函数error C2065: 'xxx' : undeclared identifier中文对照:(编译错误)未定义的标识符xxx分析:1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写。
C语言错误代码及错误信息错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Error in real constant 实型常量错误error 7: Error in integer constant 整型常量错误error 8: String constant exceeds line 字符串常量超过一行error 10: Unexpected end of file 文件非正常结束error 11: Line too long 行太长error 12: Type identifier expected 未定义的类型标识符error 13: Too many open files 打开文件太多error 14: Invalid file name 无效的文件名error 15: File not found 文件未找到error 16: Disk full 磁盘满error 17: Invalid compiler directive 无效的编译命令error 18: Too many files 文件太多error 19: Undefined type in pointer def 指针定义中未定义类型error 20: Variable identifier expected 缺变量标识符error 21: Error in type 类型错误error 22: Structure too large 结构类型太长error 23: Set base type out of range 集合基类型越界error 24: File components may not be files or objectsfile分量不能是文件或对象error 25: Invalid string length 无效的字符串长度error 26: Type mismatch 类型不匹配error 27:error 27:Invalid subrange base type 无效的子界基类型error 28:Lower bound greater than upper bound 下界超过上界error 29:Ordinal type expected 缺有序类型error 30:Integer constant expected 缺整型常量error 31:Constant expected 缺常量error 32:Integer or real constant expected 缺整型或实型常量error 33:Pointer Type identifier expected 缺指针类型标识符error 34:Invalid function result type 无效的函数结果类型error 35:Label identifier expected 缺标号标识符error 36:BEGIN expected 缺BEGINerror 37:END expected 缺ENDerror 38:Integer expression expected 缺整型表达式error 39:Ordinal expression expected 缺有序类型表达式error 40:Boolean expression expected 缺布尔表达式error 41:Operand types do not match 操作数类型不匹配error 42:Error in expression 表达式错误error 43:Illegal assignment 非法赋值error 44:Field identifier expected 缺域标识符error 45:Object file too large 目标文件太大error 46:Undefined external 未定义的外部过程与函数error 47:Invalid object file record 无效的OBJ文件格式error 48:Code segment too large 代码段太长error 49:Data segment too large 数据段太长error 50:DO expected 缺DOerror 51:Invalid PUBLIC definition 无效的PUBLIC定义error 52:Invalid EXTRN definition 无效的EXTRN定义error 53: Too many EXTRN definitions 太多的EXTRN定义error 54:OF expected 缺OFerror 55:INTERFACE expected 缺INTERFACEerror 56:Invalid relocatable reference 无效的可重定位引用error 57:THEN expected 缺THENerror 58:TO or DOWNTO expected 缺TO或DOWNTOerror 59:Undefined forward 提前引用未经定义的说明error 61:Invalid typecast 无效的类型转换error 62:Division by zero 被零除error 63:Invalid file type 无效的文件类型error 64:Cannot read or write variables of this type 不能读写此类型变量error 65:Pointer variable expected 缺指针类型变量error 66:String variable expected 缺字符串变量error 67:String expression expected 缺字符串表达式error 68:Circular unit reference 单元UNIT部件循环引用error 69:Unit name mismatch 单元名不匹配error 70:Unit version mismatch 单元版本不匹配error 71:Internal stack overflow 内部堆栈溢出error 72:Unit file format error 单元文件格式错误error 73:IMPLEMENTATION expected 缺IMPLEMENTATIONerror 74:Constant and case types do not match 常量和CASE类型不匹配error 75:Record or object variable expected 缺记录或对象变量error 76:Constant out of range 常量越界error 77:File variable expected 缺文件变量error 78:Pointer expression expected 缺指针表达式error 79:Integer or real expression expected 缺整型或实型表达式error 80:Label not within current block 标号不在当前块内error 81:Label already defined 标号已定义error 82:Undefined label in preceding statement part 在前面未定义标号error 83:Invalid argument 无效的参数error 84:UNIT expected 缺UNITerror 85: ";" expected 缺“;”error 86: ":" expected 缺“:”error 87: ";" expected 缺“;”error 88: "" expected 缺“”error 89: "" expected 缺“”error 90: "=" expected 缺“=”error 91: ":=" expected 缺“:=”error 92: "" or "." Expected 缺“”或“.”error 93: "" or "." expected 缺“”或“.”error 94: "." expected 缺“.”error 95: ".." expected 缺“..”error 96:Too many variables 变量太多error 97:Invalid FOR control variable 无效的FOR循环控制变量error 98:Integer variable expected 缺整型变量error 99:Files and procedure types are not allowed here 该处不允许文件和过程类型error 100:String length mismatch 字符串长度不匹配error 101:Invalid ordering of fields 无效域顺序error 102:String constant expected 缺字符串常量error 103:Integer or real variable expected 缺整型或实型变量error 104:Ordinal variable expected 缺有序类型变量error 105:INLINE error INLINE错误error 106:Character expression expected 缺字符表达式error 107:Too many relocation items 重定位项太多error 108:Overflow in arithmetic operation 算术运算溢出error 112:CASE constant out of range CASE常量越界error 113:Error in statement 表达式错误error 114:Cannot call an interrupt procedure 不能调用中断过程error 116:Must be in 8087 mode to compile this 必须在8087模式编译error 117:Target address not found 找不到目标地址error 118:Include files are not allowed here 该处不允许INCLUDE 文件error 119:No inherited methods are accessible here 该处继承方法不可访问error 121:Invalid qualifier 无效的限定符error 122:Invalid variable reference 无效的变量引用error 123:Too many symbols 符号太多error 124:Statement part too large 语句体太长error 126:Files must be var parameters 文件必须是变量形参error 127:Too many conditional symbols 条件符号太多error 128:Misplaced conditional directive 条件指令错位error 129:ENDIF directive missing 缺ENDIF指令error 130:Error in initial conditional defines 初始条件定义错误error 131:Header does not match previous definition 和前面定义的过程或函数不匹配error 133:Cannot evaluate this expression 不能计算该表达式error 134:Expression incorrectly terminated 表达式错误结束error 135:Invalid format specifier 无效格式说明符error 136:Invalid indirect reference 无效的间接引用error 137:Structured variables are not allowed here 该处不允许结构变量error 138:Cannot evaluate without System unit 没有System单元不能计算error 139:Cannot access this symbol 不能存取符号error 140:Invalid floating point operation 无效的符号运算error 141:Cannot compile overlays to memory 不能编译覆盖模块至内存error 142:Pointer or procedural variable expected 缺指针或过程变量error 143:Invalid procedure or function reference 无效的过程或函数调用error 144:Cannot overlay this unit 不能覆盖该单元error 146:File access denied 不允许文件访问error 147:Object type expected 缺对象类型error 148:Local object types are not allowed 不允许局部对象类型error 149:VIRTUAL expected 缺VIRTUALerror 150: Method identifier expected 缺方法标识符error 151:Virtual constructors are not allowed 不允许虚构造函数error 152:Constructor identifier expected 缺构造函数标识符error 153:Destructor identifier expected 缺析构函数标识符error 154:Fail only allowed within constructors 只能在构造函数内使用Fail标准过程error 155:Invalid combination of opcode and operands 操作数与操作符无效组合error 156:Memory reference expected 缺内存引用指针error 157:Cannot add or subtract relocatable symbols 不能加减可重定位符号error 158:Invalid register combination 无效寄存器组合error 159:286/287 instructions are not enabled 未激活286/287指令error 160:Invalid symbol reference 无效符号指针error 161:Code generation error 代码生成错误error 162:ASM expected 缺ASMerror 166:Procedure or function identifier expected 缺过程或函数标识符error 167:Cannot export this symbol 不能输出该符号error 168:Duplicate export name 外部文件名重复error 169:Executable file header toerror 170:Too many segments 段太多fatal error C1004: unexpected end of file found 未找到文件末尾可能是括号匹配问题 fatal error C1021: invalid preprocessor command '1nclude' 无效的编译预处理命令'1nclude' fatal error C1083: Cannot open include file: 'stdi.h': No such file or directory 不能打开头文件'stdi.h';文件或文件夹不存在error C2101: '&' on constant 不能计算常量的地址 error C2059: syntax error : 'while' 在'while'附近;存在语法错误 error C2061: syntax error : identifier 'x' 标识符x的附近;存在语法错误 error C2065: 'i' : undeclaredidentifier 变量i未定义 error C2078: too many initializers 数组/结构等变量初始化时的数据太多error C2087: '<Unknown>' : missing subscript 丢失数组下标 error C2106: '=' : left operand must be l-value '='的左侧应当是左值;即不能是常量 error C2115: '=' : incompatible types '='两侧的类型不兼容 error C2133: 'a' : unknown size a可能是数组名的大小不确定.. error C2137: empty character constant 空的字符常量 error C2143: syntax error : missing ';' before ...... 在......之前;缺少';' error C2146: syntax error : missing '' before identifier '......' 在标识符'......'之前缺少'' error C2181: illegal else without matching if else缺少匹配的if error C2198: 'printf' : too few actual parameters 'printf'函数的参数太少 error C2223: left of '->x' must point to struct/union '->x'的左侧应是结构类型变量或联合类型变量 error C2224: left of '.x' must have struct/union type '.x'的左侧应是结构类型变量或联合类型变量 error C2371: 'f1' : redefinition; different basic types 函数'f1'的接口被重定义;参数类型或返回值类型不一致 warning C4101: 'x' : unreferenced local variable 'x'是一个从未被使用的局部变量warning C4013: 'fi' undefined; assuming extern returning int 函数'fi'未定义;假设其是外部函数;返回值类型是int warning C4020: 'fun' : too many actual parameters 调用'fun'函数时;有太多的实参warning C4033: 'f3' must return a value 函数'f3'应当有返回值语句warning C4047: '=' : 'int ' differs in levels of indirection from'int ' 赋值运算中的类型转换:从'int '转换到'int '可能存在问题warning C4098: 'f2' : 'void' function returning a value 函数'f2'是无返回值的函数;竟然有返回值语句.. warning C4133: 'function' : incompatible types - from '...' to '...' 不兼容的类型转换从'...'类型向'...'类型 warning C4244: 'initializing' : conversion from 'const double ' to 'int '; possible loss of data 在初始化数据时;类型转换可能导致数据丢失warning C4305: 'initializing' : truncation from 'const int ' to 'char ' 初始化时;数据被截断warning C4700: local variable 'x' used without having been initialized 局部变量'x'在被使用之前未初始化; error LNK2001: unresolved external symbol _f5 f5从未定义。
1、程序:错误描述:Cannot open include file: 'stadio.h': No such file or directory 无法打开包含的文件:'stadio.h':没有这样的文件或目录修改:应将stadio.h改为stdio.h单词:include(包含)、file(文件)、directory(目录/路径)2、程序:错误描述:syntax error : missing ';' before identifier 'sum'语法错误:丢失';'在标识符'sum'之前修改:int sum,x改为int sum,x;单词:syntax(语法)、missing(丢失)、identifier(标识符)3、程序:错误描述:'X' : undeclared identifier'X':未声明的标识符修改:大小写不一致,X=1;改为x=1; 单词:undeclared(未声明)4、程序:错误描述:syntax error : 'bad suffix on number'语法错误:‘数值上有错误的后缀’修改:sum=2x;修改为sum=2*x;单词:suffix(后缀)5、程序:错误描述:同时出现下面的三个错误newline in constant// 常量中有新行syntax error : missing ')' before '}'syntax error : missing ';' before '}'修改:printf("sum=%d,x=%d\n,sum,x); 修改为printf("sum=%d,x=%d\n",sum,x);6、程序:错误描述:fatal error: unexpected end of file found//出现这个错误通常是因为大括号没有匹配致命的错误:发现意外的文件结尾修改://空行改为}单词:fatal(致命的)、unexpected(意外)、found(发现)、end of file(文件结尾)7、程序错误描述:Linking...LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main//无法解析的外部符号_main Debug/1.exe : fatal error LNK1120: 1 unresolved externals执行link.exe 时出错.修改:mian改为main单词:unresolved(未解决/未解析)、external(外部的)、symbol(符号)。
C语言常见错误分析汇总C语言是一种广泛应用的编程语言,但由于语法相对复杂,初学者容易犯一些常见的错误。
下面将汇总一些常见的C语言错误,以便帮助初学者更好地理解和避免这些问题。
1.语法错误:C语言对语法要求非常严格,一些错误的语法表达会导致编译错误。
例如,缺少分号、括号不成对等。
2.逻辑错误:这类错误通常是代码逻辑错误,导致程序运行结果与预期不同。
例如,条件判断错误、循环错误等。
3.变量未初始化:在使用变量之前,未对其进行初始化操作会导致不确定的结果。
这种错误可能会导致程序崩溃或产生意外结果。
4.数组越界:在C语言中,数组的下标从0开始,如果使用了超出数组范围的下标,会导致越界错误。
这可能会修改其他内存空间的值,导致程序错误。
5.内存泄漏:动态分配内存后没有正确释放会导致内存泄漏。
这在长时间运行的程序中可能导致内存耗尽。
6.不匹配的数据类型:数据类型不匹配会导致计算错误或编译错误。
例如,对整型变量使用浮点数运算符,或使用未定义的数据类型。
7.空指针解引用:解引用空指针会导致程序崩溃。
在使用指针之前,一定要确保其指向有效的内存空间。
8.死循环:循环条件错误或循环体内没有正确的终止条件会导致死循环,程序无法正常退出。
9.多次释放同一块内存:多次释放同一块动态分配的内存会导致程序错误或崩溃。
10.缺少返回语句:在函数中缺少返回语句或返回语句在多个分支中没有覆盖所有情况,会导致未定义的行为。
11.使用未定义的变量:在使用变量之前,必须先定义该变量。
否则会导致编译错误。
12.逻辑短路错误:逻辑运算符中,逻辑短路原则是如果已经可以确定逻辑表达式的结果,后续的表达式不会被执行。
如果依赖于后续表达式的计算结果,会导致逻辑错误。
13.误解优先级和结合性:C语言中运算符有优先级和结合性,如果不理解运算符的优先级和结合性,会导致计算错误。
14.使用未声明的函数:在调用函数之前,必须先声明函数。
否则会导致编译错误。
15. 不正确的格式化字符串:在使用printf等函数进行格式化输出时,必须提供与格式字符串匹配的参数,否则会导致未定义的行为。
C语言常见编程错误及解决方法C语言是一种广泛应用于系统开发、嵌入式系统编程和底层软件开发的程序设计语言。
然而,即使对于有经验的开发者来说,编写C语言程序时仍然可能会遇到各种各样的错误。
本文将介绍常见的C语言编程错误,并提供解决这些错误的方法。
一、语法错误语法错误是最常见的C语言编程错误之一。
它们通常是由于开发者书写错误或遗漏必要的符号导致的。
下面是一些常见的语法错误及其解决方法:1. 缺少分号在C语言中,分号是语句结束的标志。
如果在编写语句时忘记了分号,将导致编译错误。
解决这个问题的方法是仔细检查代码并确保每个语句末尾都有分号。
2. 括号不匹配括号在C语言中用于控制运算符的优先级和函数的参数列表。
如果在编写代码时忘记了括号或者括号不匹配,将导致编译错误。
解决这个问题的方法是仔细检查代码并确保每个左括号都有一个相应的右括号。
3. 变量声明错误在C语言中,变量必须先声明后使用。
如果在使用变量之前没有声明它,将导致编译错误。
解决这个问题的方法是在使用变量之前先声明它,或者使用头文件来声明变量。
二、逻辑错误逻辑错误是在代码的执行过程中出现的错误,导致程序无法按照预期的方式运行。
下面是一些常见的逻辑错误及其解决方法:1. 数组越界在C语言中,数组的索引从0开始,访问超出数组范围的元素将导致未定义的行为。
解决这个问题的方法是确保数组索引在正确的范围内,并确保不会越界访问数组。
2. 逻辑表达式错误逻辑表达式用于控制循环和条件语句。
如果逻辑表达式的条件写错了,将导致错误的代码执行路径。
解决这个问题的方法是仔细检查逻辑表达式并确保它按照预期工作。
3. 死循环死循环是指循环条件一直为真,导致程序无法跳出循环。
解决这个问题的方法是在编写循环时确保循环条件最终会变为假,或者在循环中使用控制语句来跳出循环。
三、内存错误内存错误是指在程序中使用了未分配的内存或访问了已释放的内存。
这些错误可能导致程序崩溃或产生不确定的行为。
C语言常见错误及解决方法C语言是一种广泛应用于系统软件和应用软件开发的编程语言。
然而,由于其语法较为复杂,初学者在编写C语言程序时常会犯一些常见错误。
本文将介绍几种常见的C语言错误及解决方法。
1. 语法错误(Syntax Error)语法错误是指程序中存在错误的语法结构,编译器无法理解这些语法结构,从而导致编译错误。
常见的语法错误包括拼写错误、大小写错误、标点符号错误等。
解决方法是仔细检查代码中的语法结构,确保语法正确。
2. 声明错误(Declaration Error)声明错误是指在程序中存在未定义或重复定义的变量、函数等声明。
解决方法是确保声明的变量和函数在使用之前已被正确地定义,避免重复定义。
3. 类型错误(Type Error)类型错误是指在程序中使用了错误的数据类型。
例如,将整数赋值给浮点型变量,或将字符赋值给整型变量等。
解决方法是确保赋值的数据类型与变量的数据类型匹配。
4. 逻辑错误(Logic Error)逻辑错误是指程序在运行过程中逻辑上的错误,导致程序得出错误的结果。
例如,使用错误的循环条件,导致循环无法正常结束。
解决方法是仔细检查程序的逻辑,确保逻辑正确,避免逻辑错误。
5. 数组越界错误(Array Out-of-Bounds Error)数组越界错误是指访问数组时超出了数组的边界。
例如,对一个长度为5的数组进行赋值时,访问第6个元素。
解决方法是确保对数组的访问不超过数组的边界。
6. 内存泄露错误(Memory Leak Error)内存泄露错误是指在程序中申请内存空间后,未正确释放该空间,导致内存的持续分配而无法释放。
解决方法是在申请内存空间后,使用相应的释放函数(如free()释放内存空间。
7. 死循环错误(Infinite Loop Error)死循环错误是指程序中存在无法结束的循环结构。
例如,循环条件永远为真,导致程序无法终止。
解决方法是仔细检查循环条件,确保循环能够正常结束。
C语言常见错误及解决1. error: invalid use of void expression,是因为有void型的变量或者函数返回值被使用了。
例如:printf("%d\n", sum(1,2));void sum(int a, int b){int s = a+b;}这里printf的第二个参数就是void,无法打印就会出现这样的错误。
2. error C2001: newline in constant直译:在常量中出现了换行。
错误分析:1.①字符串常量、字符常量中是否有换行。
2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。
3.③在这语句中,某个字符创常量中是否出现了双引号字符“"〞,但是没有使用转义符“\"〞。
4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号。
5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。
3. error C2021: too many characters in constant编号:C2021直译:字符常量中的字符太多了。
错误分析:单引号表示字符型常量。
一般的,单引号中必须有且只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。
另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。
4. error C2137: empty character constant编号:C2137直译:空的字符定义。
错误分析:原因是连用了两个单引号,而中间没有任何字符,这是不允许的。
5. error C2021: unknown character '0x##'编号:C2021直译:未知字符‘0x##'。
C语言常见错误分析注意:本文中所列举的错误,给出的只是错误的名称和类型以及错误提示,没有给出对应的改正方法,请有兴趣的同学们根据具体情况自行修改、编译、执行,如果在编程中出现类似错误,能够快速定位错误并解决。
一、错误分类语法错逻辑错运行错二、常见错误及提示1. 变量未定义,C语言的变量一定要先定义才能使用;#include <stdio.h>void main(){x=3; y=6;printf(“%d\n”,x+y);}错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'x' : undeclared identifierD:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'y' : undeclared identifier2. 输入输出的数据的类型与所用格式说明符不一致int a=3;float b=4.5;printf(“%f%d\n”,a,b);错误类型:逻辑错它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)错误提示:无3. 未注意int型数据的数值范围short int型数据的数值范围(-32768~32768)short int num=89101;printf(“%d”,num);会将超过低16位的数截去从而得到23563错误类型:逻辑错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4305: 'initializing' : truncation from 'const int' to 'short'D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4309: 'initializing' : truncation of constant value注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误4. 输入变量时忘记使用地址符&scanf(“%d%d”,a,b);错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'b' used without having been initializedD:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'a' used without having been initialized5. 输入时数据的组织与要求不符对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入scanf(“%d, %d”, &a, &b);应当输入:5, 6 否则程序不能正常读入数据错误类型:运行错错误提示:无6. 误把”=“作为”等于”比较符“=“为附值运算符“==“为比较运算符错误类型:逻辑错错误提示:无7. 语句后面漏分号{t=a;a=b;b=t}它是pascal的语法错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(9) : error C2143: syntax error : missing ';' before '}'8. 不该加分号的地方加了分号if(a>b);printf(“a is larger than b\n”);for(i=0;i<10;i++);{scanf(“%d”,&x);printf(“%d\n”,x*x);}错误类型:语法错错误提示:D:\WorkSpace\C++WorkSpace\测试\test.cpp(6) : warning C4390: ';' : empty controlled statement found; is this the intent?9. 对应该有花括弧的复合语句,忘记加花括弧sum=0;i=1;while(i<=100)sum=sum+1;i++;由于i始终为1,while循环无法正常退出。
C语言中的常见错误及解决方法C语言是一门广泛应用于计算机编程领域的高级编程语言。
它的简洁性和高效性使得它成为了许多程序员的首选。
然而,即使对于有经验的程序员来说,C语言中也存在一些常见的错误。
本文将探讨一些常见的C语言错误,并提供相应的解决方法。
1. 内存泄漏内存泄漏是C语言中最常见的错误之一。
它发生在程序分配了内存空间,但在使用完毕后未正确释放。
这导致内存空间被占用,最终可能导致程序崩溃或者系统变慢。
解决方法:- 使用malloc函数分配内存后,一定要使用free函数释放内存。
- 为了避免出现遗漏的情况,可以在每次使用完内存后立即释放。
2. 数组越界在C语言中,数组越界是一个常见的错误。
当程序试图访问数组中超出其边界的元素时,会导致未定义的行为,可能引发程序崩溃或产生错误的结果。
解决方法:- 在使用数组时,一定要确保索引值不会超出数组的边界。
- 可以使用循环结构和条件语句来检查数组索引的合法性。
3. 未初始化变量在C语言中,未初始化变量的使用是一个常见的错误。
当程序试图使用未初始化的变量时,它的值是不确定的,可能导致程序产生错误的结果。
解决方法:- 在使用变量之前,一定要确保它已经被正确地初始化。
- 可以使用赋值语句或者初始化函数来初始化变量。
4. 类型不匹配类型不匹配是C语言中另一个常见的错误。
它发生在程序试图将一个类型的值赋给另一个类型的变量,或者将不同类型的变量进行运算。
解决方法:- 在进行类型转换时,可以使用强制类型转换运算符来确保类型匹配。
- 在进行运算时,要确保参与运算的变量类型一致。
5. 逻辑错误逻辑错误是指程序中的逻辑错误或算法错误。
这种错误不会导致程序崩溃,但会导致程序产生错误的结果。
解决方法:- 仔细检查程序中的逻辑,确保算法的正确性。
- 使用调试工具来跟踪程序的执行过程,找出错误所在。
总结:C语言中的常见错误包括内存泄漏、数组越界、未初始化变量、类型不匹配和逻辑错误。
为了避免这些错误,程序员应该养成良好的编程习惯,如及时释放内存、检查数组索引的合法性、正确初始化变量、确保类型匹配和仔细检查程序逻辑。
C语言中的常见错误及解决方法C语言作为一种广泛应用于软件开发领域的编程语言,常常出现一些让初学者或经验不足的程序员困惑的错误。
本文将介绍C语言中常见的错误,并提供解决这些错误的方法。
一、语法错误语法错误是编程过程中最常见的错误之一。
它们通常由于代码中存在语法错误或书写错误而导致。
以下是一些常见的语法错误和解决方法:1.1 缺少分号分号是C语言中语句结束的标志,如果未在语句末尾添加分号,编译器会报错。
解决方法是仔细检查代码,确保每个语句的末尾都有分号。
1.2 括号不匹配在C语言中,括号必须成对出现。
如果括号未正确匹配,编译器会报错。
解决方法是仔细检查代码,确保每个左括号都有对应的右括号。
1.3 大小写错误C语言对大小写敏感,因此函数和变量的命名必须与其声明中的大小写完全匹配。
解决方法是检查代码中的命名,并确保其大小写匹配。
1.4 未定义的变量使用未定义的变量会导致编译器报错。
解决方法是确保在使用变量之前先进行声明或定义。
二、逻辑错误逻辑错误在语法上没有问题,但程序的逻辑流程存在缺陷,导致程序运行不符合预期。
以下是一些常见的逻辑错误和解决方法:2.1 数组越界访问在C语言中,数组的索引从0开始。
如果超出数组的索引范围进行访问,会导致程序崩溃或产生意想不到的结果。
解决方法是检查数组索引,并确保它们在合法范围内。
2.2 逻辑运算错误逻辑运算符(如&&、||和!)在C语言中用于组合表达式。
但是,如果这些运算符的使用不当,可能会导致逻辑错误。
解决方法是仔细检查逻辑运算表达式,并确保其符合预期的逻辑规则。
2.3 循环错误循环是C语言中常用的结构之一,但循环中的错误可能导致程序无限循环或不执行循环体。
解决方法是检查循环条件和循环变量,确保它们能正确地控制循环的执行。
三、内存错误内存错误是C语言中常见的错误类型之一。
以下是一些常见的内存错误和解决方法:3.1 内存泄漏内存泄漏指的是在程序中未正确释放分配的内存空间。
C语言常见错误及解决方法C语言是一门非常重要的编程语言,但是在学习和使用过程中,常常会遇到一些错误。
这些错误可能会导致程序无法正常运行或产生错误的结果。
在这篇文章中,我将介绍一些C语言常见错误及解决方法,希望对你在学习和使用C语言时能有所帮助。
1.语法错误语法错误是最常见的错误之一,它通常是由错别字、缺少分号、括号不匹配等导致的。
解决这类错误的方法是仔细检查代码,并根据编译器的错误提示进行修改。
2.类型错误类型错误指的是错误地使用了不匹配的数据类型。
比如将整数型赋值给浮点型变量,或者将字符型变量赋值给整型变量等。
解决这类错误的方法是确保变量的数据类型匹配,并进行必要的类型转换。
3.空指针错误空指针错误是指使用了未初始化或已被释放的指针变量。
当你尝试使用这些指针变量时,会导致程序崩溃或产生不可预测的结果。
解决这类错误的方法是在使用指针之前,为其分配内存空间并进行初始化。
4.内存泄漏内存泄漏是指在程序运行过程中,分配的内存空间没有被正确释放。
这会导致内存占用越来越多,最终导致程序崩溃或系统资源不足。
解决这类错误的方法是在不再需要使用一些内存空间时,使用free(函数释放它。
5.数组越界数组越界是指访问数组时超过了其允许的范围。
这会导致程序崩溃或产生不可预测的结果。
解决这类错误的方法是确保数组的索引在有效范围内,并正确使用循环等控制结构。
6.逻辑错误逻辑错误是指程序的逻辑顺序有误,导致程序无法达到预期的目标。
解决这类错误的方法是仔细分析程序的逻辑流程,并进行必要的修改和调试。
7.死循环死循环是指程序进入一个无法正常退出的循环。
这可能是由于循环条件错误或循环体内没有设置循环终止条件所导致的。
解决这类错误的方法是确保循环条件正确,同时在必要的情况下添加循环终止条件。
8.文件操作错误在进行文件操作时,可能会发生文件打开失败、读写错误等问题。
解决这类错误的方法是检查文件路径是否正确、文件是否存在以及对文件的读写权限等,并根据具体情况进行调整。
1、'bad suffix on number'是数字的下标错误。
2、下面为C语言的错误大全及中文解释:1: Ambiguous operators need parentheses —不明确的运算需要用括号括起2: Ambiguous symbol xxx —不明确的符号3: Argument list syntax error —参数表语法错误4: Array bounds missing —丢失数组界限符5: Array size toolarge —数组尺寸太大6: Bad character in paramenters —参数中有不适当的字符7: Bad file name format in include directive —包含命令中文件名格式不正确8: Bad ifdef directive synatax —编译预处理ifdef有语法错9: Bad undef directive syntax —编译预处理undef有语法错10: Bit field too large —位字段太长11: Call of non-function —调用未定义的函数12: Call to function with no prototype —调用函数时没有函数的说明13: Cannot modify a const object —不允许修改常量对象14: Case outside of switch —漏掉了case 语句15: Case syntax error —Case 语法错误16: Code has no effect —代码不可能执行到17: Compound statement missing{ —分程序漏掉"{"18: Conflicting type modifiers —不明确的类型说明符19: Constant expression required —要求常量表达式20: Constant out of range in comparison —在比较中常量超出范围21: Conversion may lose significant digits —转换时会丢失意义的数字22: Conversion of near pointer not allowed —不允许转换近指针23: Could not find file xxx —找不到XXX文件24: Declaration missing ; —说明缺少";"25: Declaration syntax error —说明中出现语法错误26: Default outside of switch —Default 出现在switch语句之外27: Define directive needs an identifier —定义编译预处理需要标识符28: Division by zero —用零作除数29: Do statement must have while —Do-while语句中缺少while部分30: Enum syntax error —枚举类型语法错误31: Enumeration constant syntax error —枚举常数语法错误32: Error directive :xxx —错误的编译预处理命令33: Error writing output file —写输出文件错误34: Expression syntax error —表达式语法错误35: Extra parameter in call —调用时出现多余错误36: File name too long —文件名太长37: Function call missing ) —函数调用缺少右括号38: Fuction definition out of place —函数定义位置错误39: Fuction should return a value —函数必需返回一个值40: Goto statement missing label —Goto语句没有标号41: Hexadecimal or octal constant too large —16进制或8进制常数太大42: Illegal character x —非法字符x43: Illegal initialization —非法的初始化44: Illegal octal digit —非法的8进制数字A45: Illegal pointer subtraction —非法的指针相减46: Illegal structure operation —非法的结构体操作47: Illegal use of floating point —非法的浮点运算48: Illegal use of pointer —指针使用非法49: Improper use of a typedefsymbol —类型定义符号使用不恰当50: In-line assembly not allowed —不允许使用行间汇编51: Incompatible storage class —存储类别不相容52: Incompatible type conversion —不相容的类型转换53: Incorrect number format —错误的数据格式54: Incorrect use of default —Default使用不当55: Invalid indirection —无效的间接运算56: Invalid pointer addition —指针相加无效57: Irreducible expression tree —无法执行的表达式运算58: Lvalue required —需要逻辑值0或非0值59: Macro argument syntax error —宏参数语法错误60: Macro expansion too long —宏的扩展以后太长61: Mismatched number of parameters in definition —定义中参数个数不匹配62: Misplaced break —此处不应出现break语句63: Misplaced continue —此处不应出现continue语句64: Misplaced decimal point —此处不应出现小数点65: Misplaced elif directive —不应编译预处理elif66: Misplaced else —此处不应出现else67: Misplaced else directive —此处不应出现编译预处理else68: Misplaced endif directive —此处不应出现编译预处理endif69: Must be addressable —必须是可以编址的70: Must take address of memory location —必须存储定位的地址71: No declaration for function xxx —没有函数xxx的说明72: No stack —缺少堆栈73: No type information —没有类型信息74: Non-portable pointer assignment —不可移动的指针(地址常数)赋值75: Non-portable pointer comparison —不可移动的指针(地址常数)比较76: Non-portable pointer conversion —不可移动的指针(地址常数)转换77: Not a valid expression format type —不合法的表达式格式78: Not an allowed type —不允许使用的类型79: Numeric constant too large —数值常太大80: Out of memory —内存不够用81: Parameter xxx is never used —能数xxx没有用到82: Pointer required on left side of -> —符号->的左边必须是指针83: Possible use of xxx before definition —在定义之前就使用了xxx(警告)84: Possibly incorrect assignment —赋值可能不正确85: Redeclaration of xxx —重复定义了xxx86: Redefinition of xxx is not identical —xxx的两次定义不一致87: Register allocation failure —寄存器定址失败88: Repeat count needs an lvalue —重复计数需要逻辑值89: Size of structure or array not known —结构体或数给大小不确定90: Statement missing ; —语句后缺少";"91: Structure or union syntax error —结构体或联合体语法错误92: Structure size too large —结构体尺寸太大93: Sub scripting missing ] —下标缺少右方括号94: Superfluous & with function or array —函数或数组中有多余的"&" 95: Suspicious pointer conversion —可疑的指针转换96: Symbol limit exceeded —符号超限97: Too few parameters in call —函数调用时的实参少于函数的参数不98: Too many default cases —Default太多(switch语句中一个)99: Too many error or warning messages —错误或警告信息太多100: Too many type in declaration —说明中类型太多101: Too much auto memory in function —函数用到的局部存储太多102: Too much global data defined in file —文件中全局数据太多103: Two consecutive dots —两个连续的句点104: Type mismatch in parameter xxx —参数xxx类型不匹配105: Type mismatch in redeclaration of xxx —xxx重定义的类型不匹配106: Unable to create output file xxx —无法建立输出文件xxx107: Unable to open include file xxx —无法打开被包含的文件xxx 108: Unable to open input file xxx —无法打开输入文件xxx109: Undefined label xxx —没有定义的标号xxx110: Undefined structure xxx —没有定义的结构xxx111: Undefined symbol xxx —没有定义的符号xxx112: Unexpected end of file in comment started on line xxx —从xxx行开始的注解尚未结束文件不能结束113: Unexpected end of file in conditional started on line xxx —从xxx 开始的条件语句尚未结束文件不能结束114: Unknown assemble instruction —未知的汇编结构115: Unknown option —未知的操作116: Unknown preprocessor directive: xxx —不认识的预处理命令xxx 117: Unreachable code —无路可达的代码118: Unterminated string or character constant —字符串缺少引号119: User break —用户强行中断了程序120: Void functions may not return a value —Void类型的函数不应有返回值121: Wrong number of arguments —调用函数的参数数目错122: xxx not an argument —xxx不是参数123: xxx not part of structure —xxx不是结构体的一部分124: xxx statement missing ( —xxx语句缺少左括号125: xxx statement missing ) —xxx语句缺少右括号126: xxx statement missing ; —xxx缺少分号127: xxx declared but never used —说明了xxx但没有使用128: xxx is assigned a value which is never used —给xxx赋了值但未用过。